BTRFSはスナップショットなしで削除されたファイルを回復します。

BTRFSはスナップショットなしで削除されたファイルを回復します。

4TBディスクのすべてのファイルを削除しました/dev/sdb1。これはrsync --deleteコマンドによって行われます。

rsyncは停止する前に約10GBのデータを書きました。

もちろん、ディスクにはスナップショットはありません。

ファイルbtrfsシステムがこのフォルダにマウントされます/home/user/Downloads

それで、データを回復する方法があるかどうかを知りたいです。

これまで(ディスクをマウント解除した後)、次のことを試しました。

  • btrfs回復:

btrfs restore -i /dev/sdb1 /mnt/RESTORE/

新しいファイルは10GBのみ回復しました。

結果:

[...]
Trying root 3001138823168... (1096/1103)
Trying root 853360640... (1097/1103)
Trying root 50626560... (1098/1103)
Trying root 31309824... (1099/1103)
Trying root 31129600... (1100/1103)
Trying root 30900224... (1101/1103)
Trying root 30818304... (1102/1103)
Trying root 30408704... (1103/1103)
Didn't find 'home/user/D*/*
  • また、次のコマンドを使用してファイルを手動で復元してみましたbtrfs restore -t 3001556484096 /dev/sdb1 /mnt/RESTORE/
parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
Ignoring transid failure
ERROR: root [1 0] level 0 does not match 1

Couldn't read tree root
Could not open root, trying backup super
parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
Ignoring transid failure
ERROR: root [1 0] level 0 does not match 1

Couldn't read tree root
Could not open root, trying backup super
parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
parent transid verify failed on 3001556484096 wanted 96918 found 96231
Ignoring transid failure
ERROR: root [1 0] level 0 does not match 1

Couldn't read tree root
Could not open root, trying backup super
  • btrfs-find-root -a /dev/sdb1出力:
Superblock thinks the generation is 96918
Superblock thinks the level is 1
[...]
Well block 3001381945344(gen: 94646 level: 0) seems good, but generation/level doesn't match, want gen: 96918 level: 1
Well block 3001359089664(gen: 94635 level: 0) seems good, but generation/level doesn't match, want gen: 96918 level: 1
Well block 853360640(gen: 94238 level: 0) seems good, but generation/level doesn't match, want gen: 96918 level: 1
  • btrfs rescue super-recover -v /dev/sdb1出力:
All Devices:
        Device: id = 1, name = /dev/sdb1

Before Recovering:
        [All good supers]:
                device name = /dev/sdb1
                superblock bytenr = 65536

                device name = /dev/sdb1
                superblock bytenr = 67108864

                device name = /dev/sdb1
                superblock bytenr = 274877906944

        [All bad supers]:

All supers are valid, no need to recover

どんな助けにも感謝します:)

アップデート1:

残念ながら、一部の破損したファイルのみを修復できました。これが私がステップに従ったことです。btrfs - 削除キャンセルスクリプト

  • 各IDを/tmp/IDファイルにインポートします。
btrfs-find-root -a /dev/sdb1 2>&1 | grep ^Well | sed -r -e 's/Well block ([0-9]+).*/\1/' | sort -rn > /tmp/ID
  • IDからすべてを復元できます。
for i in $(cat /tmp/ID) ; do mkdir /mnt/RESTORE/"$i"; btrfs restore -o -iv -t "$i" /dev/sdb1 /mnt/RESTORE/"$i" 2>&1; done

今唯一の解決策は、ファイル回復ソフトウェアを探していると思います...

答え1

前述のように、最終的にファイル回復ソフトウェアを使用するようになりました。頑張ったEaseUSデータ復旧ウィザードそしてUFS Explorer標準回復v9.13両方とも互換性があるからBTFS

両方のソフトウェアを無料で試すことができます(このモードではスキャンのみ可能なので、回復できるかどうかを確認できます)。

私の経験UFSブラウザより良い解決策です。実際には、スキャン後に削除されたファイルを元の名前とディレクトリツリーと共に一覧表示できます。

EaseUSデータ復旧ウィザードファイルは回復できますが、ほとんどの名前は正しく指定されておらず、元のディレクトリ構成を尊重しません。

だから私にとって最高の解決策はUFS Explorer標準の回復。費用は薬です。70$個人用ライセンスの場合:

https://www.ufsexplorer.com/ufs-explorer-standard-recovery/

関連情報