質問
/home/username
誤って私から複数のファイルを削除しましたrm
。エンターキーを押すとすぐに間違いを悟ったが、被害が発生した。すぐにディスクイメージ全体を作成してsudo dd if=/dev/sda of=/media/username/external_drive/image.iso
別のコンピュータにコピーし、データ復旧のための長い道のりを準備しました。それからどこから始めるべきかわからなかったことに気づきました。
私がしたこと
私はオンラインでいくつかのガイドを読んで、ついにextundelete /dev/partition_to_recover_from --restore-directory /path/to/restore
これが最も有望な解決策であることを知っていたので、試してみました。
私が直面した最初の問題は、LUKSを使用して(OSのインストール中に)ドライブを暗号化して復号化する必要があることでした。もう少し調べた後、次のコマンドを使用してパーティションを準備しました(ここでは実際のボリュームグループ名を実際の値から変更しました<my_pc_name>-vg
)pc-vg
。
$ sudo kpartx -a -v image.iso # map the disk image partitions
add map loop0p1 (254:0): 0 997376 linear 7:0 2048
add map loop0p2 (254:1): 0 2 linear 7:0 1001470
add map loop0p5 (254:2): 0 975769600 linear 7:0 1001472
$ sudo cryptsetup luksOpen /dev/mapper/loop0p5 img # unlock the partition with my data
Enter passhprase for /dev/mapper/loop0p5:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 465,8G 0 loop
├─loop0p1 254:0 0 487M 0 part
├─loop0p2 254:1 0 1K 0 part
└─loop0p5 254:2 0 465,3G 0 part
└─img 254:3 0 465,3G 0 crypt
├─pc--vg-root 254:4 0 464,3G 0 lvm
└─pc--vg-swap_1 254:5 0 980M 0 lvm
[...omitting other lsblk output...]
$ sudo vgchange -a y pc-vg
2 logical volume(s) in volume group "pc-vg" now active
その後、復元してみてください
$ sudo extundelete /dev/mapper/pc--vg-root --restore-directory /home/username/path/to/restore
NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible. You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n)
ところで、パーティションがマウントされていないため、df
これを確認しました。また、sudo fsck -N
疑い/dev/sdaX
があるので、システムを再起動し、上記の手順を繰り返しました。私は同じ出力を受け取り、元のディスクイメージのコピーを扱っていることを考慮して(データの損失に備えてバックアップを持っていました)、今回はと答えましたy
。結果:
$ sudo extundelete /dev/mapper/pc--vg-root --restore-directory /home/username/path/to/restore
NOTICE: Extended attributes are not restored.
WARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
The partition should be unmounted to undelete any files without further data loss.
If the partition is not currently mounted, this message indicates
it was improperly unmounted, and you should run fsck before continuing.
If you decide to continue, extundelete may overwrite some of the deleted
files and make recovering those files impossible. You should unmount the
file system and check it with fsck before using extundelete.
Would you like to continue? (y/n)
y
Loading filesystem metadata ... extundelete: Extended attribute has an invalid value length when trying to examine filesystem
他の調査もしてみましたが、これが何を意味するのかわかりません。
質問
しないように頑張ります。XYの問題。
私のデータを回復しようとしたときに正しいことをしていますか?それでは、extundelete
苦情は何であり、どのように解決されますか?そうでなければ、どのようにDebianのLUKS暗号化ディスクからデータを回復できますか?
追加情報が必要な場合はお問い合わせください。
添付:«最近のバックアップから復元確かにはい»が正解です。私も知っています=)。
データ損失が発生する数日前に、家全体をバックアップしました。そんなa n00b)、しかし20時間以上働いたことを失い、また取り戻したかったです。
修正する
fsck
パーティションでデータを実行してみましたが、結果は次のとおりです。
$ sudo fsck -r /dev/mapper/pc--vg-root
fsck from util-linux 2.36.1
e2fsck 1.46.2 (28-Feb-2021)
/dev/mapper/pc--vg-root: recovering journal
Clearing orphaned inode 7077927 (uid=1000, gid=1000, mode=0100600, size=0)
Clearing orphaned inode 7077925 (uid=1000, gid=1000, mode=0100600, size=65536)
Clearing orphaned inode 19794062 (uid=1000, gid=1000, mode=040775, size=4096)
Clearing orphaned inode 18366502 (uid=1000, gid=1000, mode=040755, size=4096)
Clearing orphaned inode 18366515 (uid=1000, gid=1000, mode=040755, size=4096)
Clearing orphaned inode 18366503 (uid=1000, gid=1000, mode=040755, size=4096)
Clearing orphaned inode 18366504 (uid=1000, gid=1000, mode=040755, size=4096)
Clearing orphaned inode 18366511 (uid=1000, gid=1000, mode=040755, size=4096)
Clearing orphaned inode 18366512 (uid=1000, gid=1000, mode=040755, size=4096)
Clearing orphaned inode 18351755 (uid=1000, gid=1000, mode=0100444, size=15383322)
Clearing orphaned inode 18351757 (uid=1000, gid=1000, mode=0100444, size=12832)
Clearing orphaned inode 18366521 (uid=1000, gid=1000, mode=040755, size=4096)
Clearing orphaned inode 7078039 (uid=1000, gid=1000, mode=0100600, size=0)
Clearing orphaned inode 7077945 (uid=1000, gid=1000, mode=0100600, size=65536)
Clearing orphaned inode 11927591 (uid=0, gid=0, mode=0100644, size=147932)
Clearing orphaned inode 18096551 (uid=0, gid=0, mode=0100644, size=2456)
Clearing orphaned inode 11535970 (uid=0, gid=0, mode=0100644, size=335240)
Setting free inodes count to 29879660 (was 29737485)
Setting free blocks count to 41417686 (was 20072881)
/dev/mapper/pc--vg-root: clean, 553620/30433280 files, 80298026/121715712 blocks
/dev/mapper/pc--vg-root: status 0, rss 6876, real 38.344677, user 0.482391, sys 0.290328
ファイルシステムがどのように機能するのかは分かりませんが、ここ数時間読んだことによれば、fsckが回復したいデータを削除したばかりです。今はextundelete
星の不満なしによく戻っているが
$ sudo extundelete /dev/mapper/pc--vg-root --restore-directory /home/username/path/to/restore
NOTICE: Extended attributes are not restored.
Loading filesystem metadata ... 3715 groups loaded.
Loading journal descriptors ... 0 descriptors loaded.
Searching for recoverable inodes in directory /home/username/path/to/restore...
0 recoverable inodes found.
Looking through the directory structure for deleted files ...
0 recoverable inodes still lost.
No files were undeleted.
上書きされたデータを回復できないことはわかっていますが、誤って100 GB以上を削除し、ディスクイメージを作成する前にすべてを上書きするようには見えませんdd
...
答え1
また、sudoは
fsck -N
/dev/sdaXでのみ動作したいと思います。
これは言葉ではありません。e2fsck
すべてのブロックデバイス、さらには画像ファイルでも動作します。
画像に元に戻せない書き込みを行わないでください。スワップボリュームを削除し、VGの空き容量を活用してpc--vg-root
スナップショット()を作成することをお勧めしますlvcreate --snapshot ...
。その後、e2fsck
実際のデータではなくスナップショットに対して実行できます。問題が発生した場合は、スナップショットを破棄して再開できます。
私は慣れていませんextundelete
。クイック検索ではサポートする必要があるとマークされていますが、ext4
メッセージはWARNING: EXT3_FEATURE_INCOMPAT_RECOVER is set.
サポートされていないか気に入らないかのように聞こえますext4
。これはとても古いバージョンですかextundelete
?
したがって、最初に実行してe2fsck
メッセージExtended attribute has an invalid value length
がまだ存在する場合は、最新バージョンを入手してくださいextundelete
。
この質問全体は LUKS と暗号化とは全く関係がないので、質問のタイトルを変更することをお勧めします。
答え2
私は失われた多くのファイル(おそらくすべて)を回復しましたphotorec
。見つからないフォーラムページでこれを読んで、「この他のツールも使ってみよう」と思いました。
私は走った
$ sudo kpartx -a -v image.iso # map the disk image partitions
add map loop0p1 (254:0): 0 997376 linear 7:0 2048
add map loop0p2 (254:1): 0 2 linear 7:0 1001470
add map loop0p5 (254:2): 0 975769600 linear 7:0 1001472
$ sudo cryptsetup luksOpen /dev/mapper/loop0p5 img # unlock the partition with my data
Enter passhprase for /dev/mapper/loop0p5:
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 465,8G 0 loop
├─loop0p1 254:0 0 487M 0 part
├─loop0p2 254:1 0 1K 0 part
└─loop0p5 254:2 0 465,3G 0 part
└─img 254:3 0 465,3G 0 crypt
├─pc--vg-root 254:4 0 464,3G 0 lvm
└─pc--vg-swap_1 254:5 0 980M 0 lvm
[...omitting other lsblk output...]
$ sudo vgchange -a y pc-vg
2 logical volume(s) in volume group "pc-vg" now active
パーティションを準備した後
$ sudo photorec
EXT3に関して初めてエラーが発生したときに覚えていません。私は走ろうとし、sudo fsck -r /dev/mapper/pc--vg-root
質問の更新に書いたのと同じ結果を得ました。しかしそれはうまくphotorec
いきました。正確に何をしたのかわかりませんが、うまくいったので従わないでしょう。
2回目の実行ではphotorec
ウィザードに従いました。最善の結果が得られると思われるオプションを選択しただけで、全体の履歴がないので、私が確信するオプションだけを書きましょう。
- 正しいデバイスの選択(
/dev/mapper/pc--vg-root
) - 正しいパーティションを選択してください(
ext4
)。 - 正しいパーティションファイルシステムを選択してください(
[ ext/ext3 ] ext2/ext3/ext4 filesystem
)。 [ Free ] Scan for file from ext2/ext3 unallocated space only
削除されていないファイルを回復する必要がないため、未割り当て領域()のみをスキャンするように選択します。- 回復したファイルを書き込む場所を選択
ある時点では、回復したいファイル形式(テキストとPDF)も選択しました。
数時間の分析と回復により、任意の名前と正しい拡張子を持つファイル(たとえば、正しい名前のテキストファイルとして保存されていることがわかっているファイル)で埋められた数百のサブディレクトリ(、増分番号はどこにありますか?)photorec
を取得しました。です。いくつかのランダムファイルを調べましたが、削除されていないテキストファイル(例を含む)、見かけ上ランダムな名前で名前が変更され、サブディレクトリからランダムにソートされたファイルまで、ディスク上のすべてのテキストファイルが再インポートされたようです。合計80GB。しかし、少なくとも私はそれらを返しました。recup_dir.<nnn>
<nnn>
f582010347.txt
/etc/ssh/sshd_config
今後数日間自動的にフィルタリングして、必要なものを見つけようとします。私はいくつかの迅速な試みをし、良い結果を得ました
$ grep --ignore-case --recursive -B5 -A5 'string' restore_path
どこ:
string
復元するファイルに存在することがわかっている文字列です。restore_path
photorec
回復ファイルを作成するために指定したパス
--text
オプションを追加した後、grep
回復する必要のあるPDFも識別できました。しかし、PDFはバイナリファイルであるため、PDFをすべてインポートできない可能性があることを知っています。
その結果、私が想像していたよりもはるかに良い結果が出ました。私が学んだ教訓は、定期的なバックアップが自分自身から私を守ることができないということです。また、rm
危険性の低いアイテムの代わりにエイリアスを使用することをお勧めします(これ面白そうですね)。