背景
ハードディスクから異音が聞こえ(約5年稼動しっぱなし)はじめました。
特に重要データがあるわけでもなかったので冗長化していない。
が、念のためバックアップを取ろうと思った今日この頃。
そこでddrescueなるものを最近知ったので使ってみました。
公式マニュアルは下記
GNU ddrescue Manual
対象読者
- 壊れかけのHDDからデータをバックアップしたい人
※物理障害のおきているHDDを修復するわけではありませんので注意!
ddrescueとは
GNU ddrescue(グヌー ディーディーレスキュー)は、主に不良セクタのあるハードディスクドライブ (HDD) からのデータの救出に使われる、UNIX上で動作するフリーソフトである。macOSでも動作する。開発者はAntonio Diaz(アントニオ・ディアス)。
wikiより引用
長々と書いてあるが要約すると不良セクタのあるHDDからのでデータの救出に使われるツールです。
コピー用のツールにddは有名です。しかしddコマンドは不良セクタのある媒体からの読み出しが苦手であり、ストールなどが発生したりする。そもそも正常媒体を想定したコマンドなので当然といえば当然。
その点ddrescueでは不良セクタに当たるとその箇所をマークしスキップしてコピーを行う。
スキップした箇所は最後に再度読み込むといった形で処理を行う。
このときコピーのログはファイルに残るので途中で処理が中断した場合でも前の場所から再開することができる。
また、fillモードという動作モードもありデバイスの特定の箇所をあるパターンで埋めつくすといった事も出来る。
(ddとの違いは「不良箇所のみ」といった範囲指定が出来る点である)
ddrescueメリット
メリットは以下3点
- 不良セクタを発見したらスキップし、不良セクタの位置がログに出力される
- 一旦全部書き出した後、ログに残った不良セクタだけを再度処理してくれる
- どのファイルが不良セクタの被害を受けたかが分かる
使い方/オプション
オプション | 概要 |
---|---|
-f | 上書き※ターゲットが物理ディスクでは必須 |
-n | リードエラーを無視 |
-v | 詳細表示 |
-r | 不良セクタの再読み込み回数 |
-d | ダイレクトアクセス(キャッシュを介さずにアクセス) |
コマンドイメージは下記のようになります。
$ ddrescue -f -d -r1 -v /dev/sda /dev/sdb logfile.log
導入/実行
# インストール方法は下記.GNU版を入れるためパッケージ名は「gddrescue」
$ sudo apt-get install gddrescue
# 実行.オプションは下記を参照してください.
$ ddrescue -r 3 /dev/sdc /dev/sde rescue.log
Press Ctrl-C to interrupt
Initial status (read from logfile)
rescued: 0 B, errsize: 0 B, errors: 0
Current status
rescued: 500107 MB, errsize: 0 B, current rate: 110MB/s
ipos: 499466 MB, errors: 0, average rate: 120MB/s
opos: 499466 MB
まとめ
壊れかけのHDDからデータを救い出す方法を記載しました。
ただし完璧で救えるわけでは無いので注意が必要です。
そもそも壊れかける以前に壊れても良いように冗長化ないし、
バックアップは普段から取りましょうってお話ですね。
(学生時代そんなお金は無かった。。。)