LoginSignup
5
1

More than 1 year has passed since last update.

光学メディアをddrescueで救う

Last updated at Posted at 2022-12-06

光学メディアは劣化する

…という記事を見た直後に、音楽の発表会のDVDが見られないというヘルプが。
プレーヤーで再生すると、確かに再生が途中で止まる。が、結構頑張るプレーヤーもある。
さて。

事前準備

/dev/sr0のオーナーに合わせた設定。ArchLinuxならopticalグループ、Ubuntuならcdromグループへの参加、など。

リッピング

…で検索すると、怪しいサイトが多数引っかかって困る。
そんな時こそ、ArchWiki。光学メディアの記事が詳しい。
1行で要約すると、ddが使えるようだ。
というわけでddすると、早速エラー。

オチ(中間)

DVDという触れ込みのメディア、よく見るとBlu-rayでした。そりゃエラー出るわ。
気を取り直して、Blu-rayドライブを用意。

ddrescue

ddが使えるなら、ddrescueも使えるだろ。
ということで、またArchWiki。ディスクのクローンの記事を見る。
この記事によると、-dを使う方法と、使わない方法がある。
まずは-d無し+-n付きで正常セクターを読み込み、その後-d付き+-n無しで異常セクターを救う作戦が取られている、と思われる。

GNU ddrescueのmanによると、

-d
--idirect
Use direct disc access (see Direct disc access) to read from infile, bypassing the kernel cache. (Opens the file with the flag 'O_DIRECT'). Sector size must be correctly set for this to work. Not all systems support this.
If your system does not support direct disc access, ddrescue will warn you. If the sector size is not correctly set, an unaligned read error will result and ddrescue will exit with status 1.

とのこと。実際-d付きで試したところ、Blu-rayではセクターサイズを正しく設定しないと、動作しなかった。

Blu-rayのセクターサイズ

ググった結果の物理人間適当AI処理、及び先程の光学メディアの記事より、DVD/Blu-rayともに2048バイトと推定。

色々試して最終的に採用したコマンドラインオプション

…とアルゴリズム(?)がこちら。

  1. ddrescue -b 2048 -r 3 -d /dev/sr0 hoge.iso hoge.mapを実行
  2. ddrescueが進まなくなったりエラーで諦めたら、光学ドライブのUSBケーブルを着脱して、光学ドライブをリセットする
  3. 1〜2を繰り返す or これ以上やっても無駄な感じがしたら、4に進む
  4. ddrescue -R -b 2048 -r 3 -d /dev/sr0 hoge.iso hoge.mapなど、-Rを付けて逆から走査
  5. ddrescueが進まなくなったりエラーで諦めたら、光学ドライブのUSBケーブルを着脱して、光学ドライブをリセットする
  6. 4〜5を繰り返す or 不良セクターあるけどこれ以上やっても無駄な感じがしたら、1に進む or mapファイル中の不良セクター情報が無くなれば、終了

mapファイルがあれば、それまでの救出結果を生かしつつ、救出作業を途中から再開できる。また、mapファイルはテキストファイルなので、中身が読める。

ここに至った妄想は下記の通り。

  • -d有りのほうが、-d無しに比べて、結果として全体の進みが早い場合がある
    • 光学ドライブのバッファやファームウェア、光学メディアのエラーの状態にもよる?
  • エラーが蓄積すると、ddrescueが進まなくなったりする
    • こうなると、光学ドライブのファームウェアが動けなくなる?
  • -Rだと読めなかったところが読めたりする
    • ピックアップの動きが変わるため?

結果、全セクターの救出に成功しました。劣化具合が閾値ギリギリ(?)だったのでまだ何とか救えたんでしょうかね。

結論

(光学メディアに保存したからといって)それで保存できていると思うなよ!
ありがとうArchWiki!

オチ(最終)

救出の成功を報告したところ、次から次へと要救出光学メディアが持ち込まれることに…
ご家庭でも使いたいのでddrescue教えてというご要望も…(誤家庭化をご要望でしょうか…)

今後

  • 全体的な劣化ではない傷などで、全てを救えなかった場合
    • 動画の一部の場合、数値的な穴埋めでどの程度乗り切れるのか?
    • ISOファイルシステム情報の一部だと?
    • ddrescueFill modeの使用
  • USB-Serial trobleshooterなどを使用した自動化
  • PowerReadなどエラーに対する独自機能を搭載した光学ドライブの挙動
    • 動画再生時のみ有効のようですが…
    • 専用ソフトも必要そう
  • LTOによる保存
    • ご家庭ではM-DISCでしょうか…
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1