整合性検証ファイルシステム(btrfs)に部分的に破損したファイルがあります。
$ pv -c \{30939216-15e2-4563-b77e-2ab8687ec333\}.vdi >/dev/null
pv: {30939216-15e2-4563-b77e-2ab8687ec333}.vdi: read failed: Input/output error
3.41GiB 0:00:00 [5.25GiB/s] [=====================================================================> ] 42%
このファイルの完全バックアップがありますが、アクセスが非常に遅いです。
$ pv ~/mnt/borg/able-2022-10-05T12:00:21+04:00/arch/home/intelfx/VirtualBox\ VMs/Windows\ 10/Snapshots/\{30939216-15e2-4563-b77e-2ab8687ec333\}.vdi >/dev/null
1.3MiB 0:00:30 [430KiB/s] [> ] 0% ETA 51:55:23
^C
Btrfsは、ファイルのどの部分が破損しているかを知っています。破損した範囲を読み取ろうとすると、I/O エラーが返されます。
できるだけ少ないネットワークI / Oを実行してバックアップコピーからファイルを復元する最も簡単な方法は何ですか?上書きされるデータ量を最小限に抑えるファイル復元のボーナスポイント。
ddrescueダンスを見てみようかと思いましたが、壊れやすい感じがしました。
ddrescue broken_file temp_file map_file
(保存map_file
、廃棄temp_file
)ddrescue --retrim backup_file broken_file map_file
(再使用map_file
)
たぶん、より簡単な方法やこの目的のために特別に作られたツールが欠けているのでしょうか?
ベストアンサー1
私はこれにddrescueを使用します:
ddrescue damaged_file temp temp.map
ddrescue working_file temp temp.map --retrim
mv temp working_file
これは、特別なファイルシステム関連のツールやルートアクセスなしで機能します。