バックアップコピーから部分的に読み取れないファイルを回復する手順/方法

バックアップコピーから部分的に読み取れないファイルを回復する手順/方法

整合性検証ファイルシステム(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ダンスを見てみようかと思いましたが、壊れやすい感じがしました。

  1. ddrescue broken_file temp_file map_file(保存map_file、廃棄temp_file
  2. 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

これは、特別なファイルシステム関連のツールやルートアクセスなしで機能します。

おすすめ記事