TransWikia.com

Linuxで誤って上書きしてしまったファイルを復元したい

スタック・オーバーフロー Asked by user41172 on September 1, 2021

目的

Linuxで誤って上書きしてしまった指定のファイルを復元したい
/dev/sda3 に入っている /home/Documents/target を、指定した時刻以前の状態に戻したい

USBブートしている環境

Linux ubuntu 5.0.0-23-generic #24~18.04.1-Ubuntu SMP Mon Jul 29 16:12:28 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

状況

LDME 4で 誤ってテキストファイルを上書きしてしまったので上書き後気が付き次第システムを終了した。
このディスクは暗号化されている。またブートし、ログインするためのパスワードはわかっており以下のようにパーティション分けされておりファイルシステムはext4となっている。

ubuntu@ubuntu:/$sudo fdisk -l
(不要なので略)
ディスク /dev/sda: 931.5 GiB, 1000204886016 バイト, 1953525168 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 014F04A8-0B49-4946-ADB2-5897AB304DBC
(不要なので略)

その後USBブートできるUSBがあったのでUSBブートを行いext4magicを用いて復元しようとするために ext4magic /dev/sda3/ -l とコマンドを入力したところ、下記のようになり復元できるかどうかわからない。

これを復元できるかどうか確認した上で復元できる場合復元するにはどうしたらいいでしょうか?
よろしくお願いします。

ubuntu@ubuntu:/$ sudo ext4magic /dev/sda3 -l
Filesystem in use: /dev/sda3

Using  internal Journal at Inode 8
Inode 2 is allocated
  100%   ユーザー名/.ecryptfs 
  100%   ユーザー名/.Private 
  100%   ユーザー名/README.txt 
  100%   ユーザー名/Access-Your-Private-Data.desktop 
  100%   .ecryptfs/ユーザー名/.ecryptfs/auto-mount 
  100%   .ecryptfs/ユーザー名/.ecryptfs/auto-umount 
  100%   .ecryptfs/ユーザー名/.Private/ECRYPTFS_FNEK_ENCRYPTED.FWYbEn2jq0WNZEQ9FnS7MM8kugeCun6XcL0xDfiKNzUxK9rB8KYKbC9n0---/ECRYPTFS_FNEK_ENCRYPTED.FWYbEn2jq0WNZEQ9FnS7MM8kugeCun6XcL0xzacwkg3SVGakXQQNx5ng2E--/ECRYPTFS_FNEK_ENCRYPTED.FWYbEn2jq0WNZEQ9FnS7MM8kugeCun6XcL0xR2yYBhIcJh2Vv870qanAF---/ECRYPTFS_FNEK_ENCRYPTED.FWYbEn2jq0WNZEQ9FnS7MM8kugeCun6XcL0x23EOPNzvxLA6OE5IgFszB---/ECRYPTFS_FNEK_ENCRYPTED.FWYbEn2jq0WNZEQ9FnS7MM8kugeCun6XcL0x6JtaV1UG-ELXyhOaTzmowE--/ECRYPTFS_FNEK_ENCRYPTED.FWYbEn2jq0WNZEQ9FnS7MM8kugeCun6XcL0xH-sMlUWqCoRvHDIaqzXiAE--
(略)
ext4magic : EXIT_SUCCESS

参考

ubuntu@ubuntu:/$ df -T
Filesystem     Type     1K-blocks     Used Available Use% Mounted on
udev           devtmpfs  15348412        0  15348412   0% /dev
tmpfs          tmpfs      3081220     1780   3079440   1% /run
/dev/sdb1      vfat      61256224  2001952  59254272   4% /cdrom
/dev/loop0     squashfs   1895936  1895936         0 100% /rofs
/cow           overlay   15406096   737076  14669020   5% /
tmpfs          tmpfs     15406096    78728  15327368   1% /dev/shm
tmpfs          tmpfs         5120        4      5116   1% /run/lock
tmpfs          tmpfs     15406096        0  15406096   0% /sys/fs/cgroup
tmpfs          tmpfs     15406096      532  15405564   1% /tmp
tmpfs          tmpfs      3081216       64   3081152   1% /run/user/999
/dev/loop1     squashfs     90624    90624         0 100% /snap/core/7270
/dev/loop2     squashfs     55808    55808         0 100% /snap/core18/1074
/dev/loop3     squashfs     43904    43904         0 100% /snap/gtk-common-themes/1313
/dev/loop4     squashfs    153600   153600         0 100% /snap/gnome-3-28-1804/67
/dev/loop5     squashfs      4224     4224         0 100% /snap/gnome-calculator/406
/dev/loop6     squashfs     15104    15104         0 100% /snap/gnome-characters/296
/dev/loop7     squashfs      1024     1024         0 100% /snap/gnome-logs/61
/dev/loop8     squashfs      3840     3840         0 100% /snap/gnome-system-monitor/100
/dev/sda3      ext4     102688032 26638320  70790448  28% /media/ubuntu/140fda0e-449f-4b18-a94c-c0c5c6a6064e

ディレクトリ構造

ubuntu@ubuntu:/media$ sudo tree -a -L 5 .
.
├── cdrom -> /cdrom
└── ubuntu
    └── 140fda0e-449f-4b18-a94c-c0c5c6a6064e
        ├── .ecryptfs
        │   └── ユーザー名
        │       ├── .Private
        │       └── .ecryptfs
        ├── ユーザー名
        │   ├── .Private -> /home/.ecryptfs/ユーザー名/.Private
        │   ├── .ecryptfs -> /home/.ecryptfs/ユーザー名/.ecryptfs
        │   ├── Access-Your-Private-Data.desktop -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop
        │   └── README.txt -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.txt
        └── lost+found

追記
cubick♦さんの示したコマンドを入力したところ次のようになり復元できませんでした

ubuntu@ubuntu:~$ sudo ext4magic /dev/sda3 -a 時刻はじめ  -b 時刻おわり -r -f "home/Documents/target"
"RECOVERDIR"  accept for recoverdir
Filesystem in use: /dev/sda3

Using  internal Journal at Inode 8
Activ Time after  : Mon Jul 20 時刻はじめ 2020
Activ Time before : Mon Jul 20 時刻終わり 2020
Error: Inode not found for "home/Documents/target"
Check the valid PATHNAME "home/Documents/target" and the BEFORE option "Mon Jul 20 13:50:38 2020
"
ext4magic : EXIT_SUCCESS

そもそもそのようなパスがないということでこのinode自体がすでに削除されているのか暗号化が解除されておらずパスがわからないかがわからないのでわからないので一度暗号化されたディスクを作成し似たような状況を作成しすぐにシャットダウンを行いこのコマンドで暗号化されたディスクから復元できるかを試してみます

One Answer

詳しい使い方は man ext4magicオンラインマニュアル も必ず参照してみてください。

一番シンプルな条件を当てはめると

  • パーティションはスワップ等を除けば //dev/sda3
  • 復元対象の /home/Documents/target はファイルと仮定

今回のケースでは以下のような実行方法になりそうです。

$ sudo ext4magic /dev/sda3 -f "home/Documents/target"
  • もし日付や時刻に当たりが付いているなら、-a-b オプションも併用する
  • ターゲットがディレクトリの場合は -r も追加する
  • 復元先のディレクトリに注意! (元のパーティションとは別の保存先を用意しておく)

Answered by cubick on September 1, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP