Linux環境でrmによって誤って削除されたファイルを回復する方法

Linux環境でrmによって誤って削除されたファイルを回復する方法

序文

Linux でファイルを削除する場合、 sudo rm -rf /*コマンドは必須です。このコマンドを見るたびに、面白い画像が思い浮かびます。

rm

この「ゴミを掃除する」という説明は、本当に「ちょうどいい」です。初心者がフォーラムで質問したところ、誰かが冗談でsudo rm -rf /*コマンドで返信したところ、問題は解決し、初心者は殺されたそうですよ~

データベースの削除から逃走まで、毎日ちょっとしたトリックで刑務所に行くことになるので、 rm -rfコマンドを使用するときは注意が必要です。これは、Windows でShift+Deleteの組み合わせを使用するのと同じです。ファイルはごみ箱に入れられるのではなく、直接完全に削除されます。Linux でrmコマンドを実行することは、完全に削除することと同じです。

sudo rm -rf /*は非常に危険ですが、直接書くことはほとんどありません。しかし、 rmコマンドは依然として頻繁に使用されます。ほんの数日前、私が苦労して書いたシェル スクリプトがrm -rfを使用して直接削除されました。幸いなことに、事前に内容をコンソールに出力していたので、そうでなければスクリプト全体が無駄に書かれていたでしょう。

RMの後には希望はあるのでしょうか?

rmコマンドは永久削除を意味しますが、ファイルを復元できないということではありません。復元できる可能性が異なるというだけです。実際、削除コマンドはファイルノードを削除対象としてマークするだけで、ファイルの内容を実際にクリアするわけではありません。削除後すぐにファイルを復元すれば、成功する可能性は依然として非常に高くなります。ただし、他のユーザーがこのマシンを使用していた場合や、何らかのディスク書き込みプロセスが実行されていた場合、この部分のデータはすぐに上書きされる可能性があります。この時点では、ファイルを回復することは基本的に不可能です。

最前線を使ってファイルを取得する

foremost 、ファイルのヘッダーとフッターの情報、およびファイルの組み込みデータ構造に基づいてファイルを回復するコマンド ライン ツールです。インストールと回復の手順は次のとおりです。

foremostインストール

CentOSシステムはsudo yum install https://forensics.cert.org/centos/cert/7/x86_64//foremost-1.5.7-13.1.el7.x86_64.rpm -yコマンドを実行することで完了できます。

Ubuntuシステムの場合は、次のコマンドを試してください: sudo apt install foremost

[root@VM-0-3-centos ~]# sudo yum install https://forensics.cert.org/centos/cert/7/x86_64//foremost-1.5.7-13.1.el7.x86_64.rpm -y
読み込まれたプラグイン: fastestmirror、langpacks
リポジトリ epel が構成に複数回リストされています
foremost-1.5.7-13.1.el7.x86_64.rpm | 46 kB 00:00:01
/var/tmp/yum-root-XJIfxM/foremost-1.5.7-13.1.el7.x86_64.rpm を調べています: foremost-1.5.7-13.1.el7.x86_64
/var/tmp/yum-root-XJIfxM/foremost-1.5.7-13.1.el7.x86_64.rpm をインストール対象としてマークしています
依存関係の解決
--> トランザクションチェックを実行中
---> パッケージ foremost.x86_64 0:1.5.7-13.1.el7 がインストールされます
--> 依存関係の解決が完了しました
epel/7/x86_64 | 4.7 KB 00:00:00
epel/7/x86_64/group_gz | 96 KB 00:00:00
epel/7/x86_64/updateinfo | 1.0 MB 00:00:00
epel/7/x86_64/primary_db | 7.0 MB 00:00:01
エクストラ/7/x86_64 | 2.9 kB 00:00:00
エクストラ/7/x86_64/primary_db | 243 kB 00:00:00
os/7/x86_64 | 3.6 KB 00:00:00
アップデート/7/x86_64 | 2.9 kB 00:00:00
アップデート/7/x86_64/primary_db | 12 MB 00:00:01

依存関係が解決されました

=====================================================================================================================
 パッケージ アーキテクチャ バージョン リポジトリ サイズ
=====================================================================================================================
インストール中:
 フォアモスト x86_64 1.5.7-13.1.el7 /フォアモスト-1.5.7-13.1.el7.x86_64 85k

取引概要
=====================================================================================================================
1 つのパッケージをインストール

合計サイズ: 85k
インストールサイズ: 85k
パッケージをダウンロードしています:
トランザクションチェックを実行中
トランザクションテストの実行
トランザクションテストが成功しました
トランザクションの実行
  インストール中: foremost-1.5.7-13.1.el7.x86_64 1/1
  検証中: foremost-1.5.7-13.1.el7.x86_64 1/1

インストール済み:
  一番最初の.x86_64 0:1.5.7-13.1.el7

完了!
[root@VM-0-3-centos ~]#

テストファイルを作成する

[root@VM-0-3-centos ~]# echo "これは重要なファイルです">important.txt
[root@VM-0-3-centos ~]# pwd
/根
[root@VM-0-3-centos ~]# ls
connecttendis.sh important.txt 復元 tarlist tendis test.iso
[root@VM-0-3-centos ~]# mkdir -p /tmp/restore

ファイルを削除した後、復元してみてください

[root@VM-0-3-centos ~]# rm important.txt
[root@VM-0-3-centos ~]# foremost -i /dev/vda1 -o /tmp/restore/
処理中: /dev/vda1
|***********セグメンテーション違反

実行して数分後、クラッシュし、回復に失敗しました。ディレクトリを開くと、次の内容が見つかりました。

[root@VM-0-3-centos ~]# ls /tmp/restore/
監査.txt bmp doc exe htm jpg mov mpg pdf ppt rar sdw sxc sxw wav xls zip
avi dll docx gif jar mbd mp4 ole png pptx rif sx sxi vis wmv xlsx

復元する必要があるファイルの種類に関連しているようです。別のマシンで別のpngファイルを試してください。まずshowball.pngテストファイルを見つけて、パーティション/dev/vda1を確認してください。

[root@VM-0-3-centos ~]# df
ファイルシステム 1Kブロック 使用済み 使用可能 使用率 マウント済み
devtmpfs 930496 0 930496 0% /dev
tmpfs 941004 24 940980 1% /dev/shm
tmpfs 941004 508 940496 1% /実行
tmpfs 941004 0 941004 0% /sys/fs/cgroup
/dev/vda1 51473868 6458344 42692404 14% /
/dev/loop0 361650 361650 0 100% /mnt/iso
tmpfs 188204 0 188204 0% /run/user/0
[root@VM-0-3-centos ~]# pwd
/根
[root@VM-0-3-centos ~]# ls
showball.png を復元する

png ファイルを削除した後、復元を試みてください。進行状況バーが終了したら、指定されたディレクトリ/root/restore/に移動して表示できます。

[root@VM-0-3-centos ~]# rm showball.png
rm: 通常ファイル 'showball.png' を削除しますか? y
[root@VM-0-3-centos ~]# pwd
/根
[root@VM-0-3-centos ~]# foremost -t png -i /dev/vda1 -o /root/restore/
処理中: /dev/vda1
|************************************************************************************************************|

指定されたディレクトリには、 audit.txt統計ファイルとタイプフォルダpngがあります。

[root@VM-0-3-centos ~]# ll 復元します/
合計40
-rw-r--r-- 1 ルート ルート 24548 11月27日 22:57 監査.txt
drwxr-xr-- 2 ルート ルート 16384 11月 27 22:56 png
[root@VM-0-3-centos ~]# cd restore/
[root@VM-0-3-centos 復元]# ll png
合計 43764
-rw-r--r-- 1 ルート ルート 3500 11月 27日 22:53 00367400.png
-rw-r--r-- 1 ルート ルート 3578 11月 27日 22:53 00367408.png
-rw-r--r-- 1 ルート ルート 3445 11月 27日 22:53 00367416.png
-rw-r--r-- 1 ルート ルート 368 11月 27日 22:53 00367432.png
-rw-r--r-- 1 ルート ルート 363 11月 27日 22:53 00367456.png
-rw-r--r-- 1 ルート ルート 392 11月 27日 22:53 00367464.png
-rw-r--r-- 1 ルート ルート 199 11月 27 22:53 00367616.png
...

png ディレクトリ内のファイル名はすべて数字で、元々削除されたファイルとはまったく異なります。audit.txt ファイルに基づいて確認する必要があります。ファイルを開いて確認します。

[root@VM-0-3-centos restore]# ヘッド監査.txt
Foremost バージョン 1.5.7 (Jesse Kornblum、Kris Kendall、Nick Mikus による)
監査ファイル

Foremostは2021年11月27日土曜日22:53:48に開始されました
呼び出し: foremost -t png -i /dev/vda1 -o /root/restore/
出力ディレクトリ: /root/restore
設定ファイル: /etc/foremost.conf
------------------------------------------------------------------
ファイル: /dev/vda1
開始: 2021年11月27日土曜日 22:53:48
[root@VM-0-3-centos 復元]# head -n 20 監査.txt
Foremost バージョン 1.5.7 (Jesse Kornblum、Kris Kendall、Nick Mikus による)
監査ファイル

Foremostは2021年11月27日土曜日22:53:48に開始されました
呼び出し: foremost -t png -i /dev/vda1 -o /root/restore/
出力ディレクトリ: /root/restore
設定ファイル: /etc/foremost.conf
------------------------------------------------------------------
ファイル: /dev/vda1
開始: 2021年11月27日土曜日 22:53:48
長さ: 49 GB (53686025728 バイト)

番号 名前 (bs=512) サイズ ファイルオフセット コメント

0: 00367400.png 3 KB 188108800 (16 x 16)
1: 00367408.png 3 KB 188112896 (16 x 16)
2: 00367416.png 3 KB 188116992 (16 x 16)
3: 00367432.png 368 B 188125184 (16 x 16)
4: 00367456.png 363 B 188137472 (16 x 16)
5: 00367464.png 392 B 188141568 (16 x 16)
...

監査.txtファイルには、復元されたファイルに関する簡単な情報が記録されます。削除された元のファイルの関連情報を知っておく必要があります。そうでなければ、ファイルを1つずつ開くしかありません。解像度で検索しました。

[root@VM-0-3-centos restore]# grep "1217" 監査.txt
116: 12888200.png 40 KB 6598758400 (1217 x 690)
360: 38088960.png 40 KB 19501547520 (1217 x 690)

フィルタリングされた情報によると、 12888200.pngを開いてみると、それが「誤って削除した」ファイルであることがわかりました。これで復元できます。

extundeleteを使用してファイルを回復する

extundelete は、ext3 および ext4 ファイル システムでのファイル回復をサポートします。Linux 環境でファイル システム タイプを表示するには、 cat /etc/fstabを使用します。

[root@VM-0-3-centos ~]# cat /etc/fstab
UUID=21dbe030-aa71-4b3a-8610-3b942dd447fa / ext4 noatime、acl、user_xattr 1 1
proc /proc proc デフォルト 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
devpts /dev/pts devpts モード=0620、gid=5 0 0
[root@VM-0-3-centos ~]#

依存ファイルをインストールする

[root@VM-0-3-centos ~]# yum install e2fsprogs-devel
読み込まれたプラグイン: fastestmirror、langpacks
リポジトリ epel が構成に複数回リストされています
最速ミラーの決定
エペル | 4.7 kB 00:00:00
特典 | 2.9 kB 00:00:00
os | 3.6 KB 00:00:00
アップデート | 2.9 kB 00:00:00
(1/2): epel/7/x86_64/updateinfo | 1.0 MB 00:00:00
(2/2): epel/7/x86_64/primary_db | 7.0 MB 00:00:01
依存関係の解決
--> トランザクションチェックを実行中
---> パッケージ e2fsprogs-devel.x86_64 0:1.42.9-19.el7 がインストールされます
--> 依存関係の解決が完了しました

依存関係が解決されました

===============================================================================================================
 パッケージ アーキテクチャ バージョン リポジトリ サイズ
===============================================================================================================
インストール中:
 e2fsprogs-devel x86_64 1.42.9-19.el7 os 73k

取引概要
===============================================================================================================
1 パッケージをインストール

合計ダウンロードサイズ: 73 k
インストールサイズ: 162 k
これでいいですか [y/d/N]: y
パッケージをダウンロードしています:
e2fsprogs-devel-1.42.9-19.el7.x86_64.rpm | 73 KB 00:00:00
トランザクションチェックを実行中
トランザクションテストの実行
トランザクションテストが成功しました
トランザクションの実行
  インストール中: e2fsprogs-devel-1.42.9-19.el7.x86_64 1/1
  検証中: e2fsprogs-devel-1.42.9-19.el7.x86_64 1/1

インストール済み:
  e2fsprogs-devel.x86_64 0:1.42.9-19.el7

完了!
[root@VM-0-3-centos ~]#

extundelete ソースコードをダウンロード

[root@VM-0-3-centos ~]# wget https://src.fedoraproject.org/repo/pkgs/extundelete/extundelete-0.2.4.tar.bz2/77e626ad31433680c0a222069295d2ca/extundelete-0.2.4.tar.bz2
--2021-11-28 18:36:15-- https://src.fedoraproject.org/repo/pkgs/extundelete/extundelete-0.2.4.tar.bz2/77e626ad31433680c0a222069295d2ca/extundelete-0.2.4.tar.bz2
src.fedoraproject.org (src.fedoraproject.org) を解決しています... 38.145.60.20, 38.145.60.21
src.fedoraproject.org (src.fedoraproject.org)|38.145.60.20|:443 に接続しています... 接続されました。
HTTP リクエストが送信されました。応答を待っています... 200 OK
長さ: 108472 (106K) [application/x-bzip2]
保存先: 'extundelete-0.2.4.tar.bz2'

100%[=====================================================================================================>] 108,472 33.5KB/秒 3.2 秒

2021-11-28 18:36:20 (33.5 KB/s) - 'extundelete-0.2.4.tar.bz2' を保存しました [108472/108472]

[root@VM-0-3-centos ~]# ls
extundelete-0.2.4.tar.bz2

extundelete ソースコードを解凍する

[root@VM-0-3-centos ~]# tar -jxvf extundelete-0.2.4.tar.bz2
削除解除-0.2.4/
extundelete-0.2.4/acinclude.m4
extundelete-0.2.4/欠落
extundelete-0.2.4/autogen.sh
extundelete-0.2.4/aclocal.m4
extundelete-0.2.4/設定
extundelete-0.2.4/ライセンス
extundelete-0.2.4/README
extundelete-0.2.4/インストールsh
extundelete-0.2.4/config.h.in
削除済み-0.2.4/src/
extundelete-0.2.4/src/extundelete.cc
extundelete-0.2.4/src/block.h
extundelete-0.2.4/src/kernel-jbd.h
extundelete-0.2.4/src/insertionops.cc
extundelete-0.2.4/src/block.c
extundelete-0.2.4/src/cli.cc
extundelete-0.2.4/src/extundelete-priv.h
extundelete-0.2.4/src/extundelete.h
extundelete-0.2.4/src/jfs_compat.h
extundelete-0.2.4/src/Makefile.in
extundelete-0.2.4/src/Makefile.am
extundelete-0.2.4/configure.ac
extundelete-0.2.4/depcomp
extundelete-0.2.4/Makefile.in
extundelete-0.2.4/Makefile.am
[root@VM-0-3-centos ~]# cd extundelete-0.2.4/
[root@VM-0-3-centos extundelete-0.2.4]# ls
acinclude.m4 aclocal.m4 autogen.sh config.h.in configure configure.ac depcomp
install-sh LICENSE Makefile.am Makefile.in README src がありません
[root@VM-0-3-centos extundelete-0.2.4]#

xtundeleteソースコードのインストールをコンパイルする

[root@VM-0-3-centos extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install
extundelete 0.2.4 の設定
生成されたファイルをディスクに書き込む
make -s をすべて再帰的に実行する
すべてを src で作成する
extundelete.cc: 関数 'ext2_ino_t find_inode(ext2_filsys, ext2_filsys, ext2_inode*, std::string, int)' 内:
extundelete.cc:1272:29: 警告: { } 内で 'search_flags' を 'int' から 'ext2_ino_t {別名 unsigned int}' に縮小変換しています [-Wnarrowing]
    buf、match_name2、priv、0};
                             ^
src にインストールする
  /usr/bin/install -c extundelete '/usr/local/extundelete/bin'
[root@VM-0-3-centos extundelete-0.2.4]# どの extundelete
/usr/bin/which: (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) に extundelete がありません
[root@VM-0-3-centos extundelete-0.2.4]# ll /usr/local/extundelete/bin/
合計 1296
-rwxr-xr-x 1 ルート ルート 1323360 11月28日 18:45 削除

このステップでconfigure: error: C++ compiler cannot create executablesと報告された場合は、 yum -y install gcc-c++コマンドを実行してコンパイル環境をインストールできます。

テストファイルの準備

[root@VM-0-3-centos の例]# df -T
ファイルシステムタイプ 1Kブロック 使用済み 使用可能 使用率 マウント先
devtmpfs devtmpfs 930496 0 930496 0% /dev
tmpfs tmpfs 941004 24 940980 1% /dev/shm
tmpfs tmpfs 941004 508 940496 1% /実行
tmpfs tmpfs 941004 0 941004 0% /sys/fs/cgroup
/dev/vda1 ext4 51473868 6465732 42685016 14% /
/dev/loop0 iso9660 361650 361650 0 100% /mnt/iso
tmpfs tmpfs 188204 0 188204 0% /run/user/0
[root@VM-0-3-centos の例]# cp ../extundelete-0.2.4.tar.bz2 .
[root@VM-0-3-centos の例]# ls
extundelete-0.2.4.tar.bz2

ファイルのinode情報を照会する

先ほどダウンロードした extundelete ソース パッケージを「誤って削除された」ファイルとして選択し、まず情報を確認します。 -li使用すると、最初の列にファイルの inode 情報が表示されます。examples フォルダーの inode 値は 1311798 です。

[root@VM-0-3-centos ~]# ls examples/
extundelete-0.2.4.tar.bz2
[root@VM-0-3-centos ~]# ls -li
合計 361676
1311798 drwxr-xr-x 2 ルート ルート 4096 11月 28日 20:28 例
1310761 drwxr-xr-x 3 1000 1000 4096 11月28日 18:45 extundelete-0.2.4
 918157 drwxr-xr-x 2 ルート ルート 4096 2021年2月28日 tarlist
 396057 -rw-r--r-- 1 ルート ルート 370329600 2021年2月27日 test.iso

テストファイルを削除し、クエリ情報を使用する

[root@VM-0-3-centos ~]# cd examples/
[root@VM-0-3-centos の例]# ls
extundelete-0.2.4.tar.bz2
[root@VM-0-3-centos の例]# rm extundelete-0.2.4.tar.bz2 -f
[root@VM-0-3-centos の例]# ls
[root@VM-0-3-centos の例]# /usr/local/extundelete/bin/extundelete /dev/vda1 --inode 1311798
注意: 拡張属性は復元されません。
警告: EXT3_FEATURE_INCOMPAT_RECOVER が設定されています。
さらなるデータ損失なしにファイルを復元するには、パーティションをアンマウントする必要があります。
パーティションが現在マウントされていない場合、このメッセージは
不適切にアンマウントされたため、続行する前に fsck を実行する必要があります。
続行する場合は、extundeleteにより削除されたデータの一部が上書きされる可能性があります。
ファイルをマウントし、それらのファイルを回復不可能にします。
extundelete を使用する前に、ファイルシステムを fsck でチェックしてください。
続行しますか? (y/n)
ええ
ファイルシステムのメタデータを読み込んでいます... 400 個のグループが読み込まれました。
グループ: 160
inode 1311798 の内容:
0000 | ed 41 00 00 00 10 00 00 7a 62 a3 61 1b 7a a3 61 | .A......zb.aza
0010 | 1b 7a a3 61 00 00 00 00 00 00 02 00 08 00 00 00 | .za...........
0020 | 00 00 08 00 0b 00 00 00 0a f3 01 00 04 00 00 00 | ................
0030 | 00 00 00 00 00 00 00 00 01 00 00 00 79 20 50 00 | ............y P.
0040 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0050 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0060 | 00 00 00 00 7c 63 ab ad 00 00 00 00 00 00 00 00 | ....|c..........
0070 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
0080 | 1c 00 00 00 80 da 0d a3 80 da 0d a3 94 24 04 08 | .............$..
0090 | 7a 62 a3 61 94 24 04 08 00 00 00 00 00 00 00 00 | zb.a.$..........
00a0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00b0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00c0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00d0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
00f0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................

iノードが割り当てられました
ファイルモード: 16877
所有者 UID の下位 16 ビット: 0
サイズ(バイト):4096
アクセス時間: 1638097530
作成時間: 1638103579
更新日時: 1638103579
削除時間: 0
グループ ID の下位 16 ビット: 0
リンク数: 2
ブロック数: 8
ファイルフラグ: 524288
ファイル バージョン (NFS 用): 2913690492
ファイル ACL: 0
ディレクトリ ACL: 0
フラグメントアドレス: 0
直接ブロック: 127754、4、0、0、1、5251193、0、0、0、0、0、0、0
間接ブロック: 0
二重間接ブロック: 0
三重間接ブロック: 0

ファイル名 | Inode 番号 | 削除ステータス
.1311798
..393219
extundelete-0.2.4.tar.bz2 396764 削除されました
conftest.err 1311833 削除されました
[root@VM-0-3-centos の例]#

extundelete-0.2.4.tar.bz2ファイルのステータスがDeletedあることがわかりました。

extundeleteを使用してファイルを回復する

[root@VM-0-3-centos ~]# /usr/local/extundelete/bin/extundelete /dev/vda1 --restore-directory /tmp
注意: 拡張属性は復元されません。
警告: EXT3_FEATURE_INCOMPAT_RECOVER が設定されています。
さらなるデータ損失なしにファイルを復元するには、パーティションをアンマウントする必要があります。
パーティションが現在マウントされていない場合、このメッセージは
不適切にアンマウントされたため、続行する前に fsck を実行する必要があります。
続行する場合は、extundeleteにより削除されたデータの一部が上書きされる可能性があります。
ファイルをマウントし、それらのファイルを回復不可能にします。
extundelete を使用する前に、ファイルシステムを fsck でチェックしてください。
続行しますか? (y/n)
ええ
ファイルシステムのメタデータを読み込んでいます... 400 個のグループが読み込まれました。
ジャーナル記述子を読み込んでいます... 31842 個の記述子が読み込まれました。
*** `/usr/local/extundelete/bin/extundelete' でエラーが発生しました: 二重解放または破損 (!prev): 0x00000000014d6020 ***
======= バックトレース: =========
lib64/libc.so.6(+0x81299)[0x7f5c08190299] です。
ローカルディレクトリ
ローカルディレクトリ
ローカルディレクトリ
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f5c08131555]
ローカルディレクトリ
======= メモリマップ: ========
00400000-0041c000 r-xp 00000000 fd:01 1311942 /usr/local/extundelete/bin/extundelete
0061c000-0061d000 r--p 0001c000 fd:01 1311942 /usr/local/extundelete/bin/extundelete
0061d000-0061e000 rw-p 0001d000 fd:01 1311942 /usr/local/extundelete/bin/extundelete
0061e000-0061f000 rw-p 00000000 00:00 0
014c6000-0176e000 rw-p 00000000 00:00 0 [ヒープ]
7f5c00000000-7f5c00021000 rw-p 00000000 00:00 0
7f5c00021000-7f5c04000000 ---p 00000000 00:00 0
7f5c07ca1000-7f5c07ef3000 rw-p 00000000 00:00 0
7f5c07ef3000-7f5c07f0a000 r-xp 00000000 fd:01 265649 /usr/lib64/libpthread-2.17.so
7f5c07f0a000-7f5c08109000 ---p 00017000 fd:01 265649 /usr/lib64/libpthread-2.17.so
7f5c08109000-7f5c0810a000 r--p 00016000 fd:01 265649 /usr/lib64/libpthread-2.17.so
7f5c0810a000-7f5c0810b000 rw-p 00017000 fd:01 265649 /usr/lib64/libpthread-2.17.so
7f5c0810b000-7f5c0810f000 rw-p 00000000 00:00 0
7f5c0810f000-7f5c082d2000 r-xp 00000000 fd:01 265623 /usr/lib64/libc-2.17.so
7f5c082d2000-7f5c084d2000 ---p 001c3000 fd:01 265623 /usr/lib64/libc-2.17.so
7f5c084d2000-7f5c084d6000 r--p 001c3000 fd:01 265623 /usr/lib64/libc-2.17.so
7f5c084d6000-7f5c084d8000 rw-p 001c7000 fd:01 265623 /usr/lib64/libc-2.17.so
7f5c084d8000-7f5c084dd000 rw-p 00000000 00:00 0
7f5c084dd000-7f5c084f2000 r-xp 00000000 fd:01 291206 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f5c084f2000-7f5c086f1000 ---p 00015000 fd:01 291206 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f5c086f1000-7f5c086f2000 r--p 00014000 fd:01 291206 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f5c086f2000-7f5c086f3000 rw-p 00015000 fd:01 291206 /usr/lib64/libgcc_s-4.8.5-20150702.so.1
7f5c086f3000-7f5c087f4000 r-xp 00000000 fd:01 287349 /usr/lib64/libm-2.17.so
7f5c087f4000-7f5c089f3000 ---p 00101000 fd:01 287349 /usr/lib64/libm-2.17.so
7f5c089f3000-7f5c089f4000 r--p 00100000 fd:01 287349 /usr/lib64/libm-2.17.so
7f5c089f4000-7f5c089f5000 rw-p 00101000 fd:01 287349 /usr/lib64/libm-2.17.so
7f5c089f5000-7f5c08ade000 r-xp 00000000 fd:01 266798 /usr/lib64/libstdc++.so.6.0.19
7f5c08ade000-7f5c08cde000 ---p 000e9000 fd:01 266798 /usr/lib64/libstdc++.so.6.0.19
7f5c08cde000-7f5c08ce6000 r--p 000e9000 fd:01 266798 /usr/lib64/libstdc++.so.6.0.19
7f5c08ce6000-7f5c08ce8000 rw-p 000f1000 fd:01 266798 /usr/lib64/libstdc++.so.6.0.19
7f5c08ce8000-7f5c08cfd000 rw-p 00000000 00:00 0
7f5c08cfd000-7f5c08d3f000 r-xp 00000000 fd:01 267873 /usr/lib64/libext2fs.so.2.4
7f5c08d3f000-7f5c08f3f000 ---p 00042000 fd:01 267873 /usr/lib64/libext2fs.so.2.4
7f5c08f3f000-7f5c08f40000 r--p 00042000 fd:01 267873 /usr/lib64/libext2fs.so.2.4
7f5c08f40000-7f5c08f42000 rw-p 00043000 fd:01 267873 /usr/lib64/libext2fs.so.2.4
7f5c08f42000-7f5c08f45000 r-xp 00000000 fd:01 265948 /usr/lib64/libcom_err.so.2.1
7f5c08f45000-7f5c09144000 ---p 00003000 fd:01 265948 /usr/lib64/libcom_err.so.2.1
7f5c09144000-7f5c09145000 r--p 00002000 fd:01 265948 /usr/lib64/libcom_err.so.2.1
7f5c09145000-7f5c09146000 rw-p 00003000 fd:01 265948 /usr/lib64/libcom_err.so.2.1
7f5c09146000-7f5c09168000 r-xp 00000000 fd:01 265614 /usr/lib64/ld-2.17.so
7f5c092b1000-7f5c0935d000 rw-p 00000000 00:00 0
7f5c09363000-7f5c09367000 rw-p 00000000 00:00 0
7f5c09367000-7f5c09368000 r--p 00021000 fd:01 265614 /usr/lib64/ld-2.17.so
7f5c09368000-7f5c09369000 rw-p 00022000 fd:01 265614 /usr/lib64/ld-2.17.so
7f5c09369000-7f5c0936a000 rw-p 00000000 00:00 0
7ffe581db000-7ffe581fc000 rw-p 00000000 00:00 0 [スタック]
7ffe581fc000-7ffe581fe000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
中止
[root@VM-0-3-centos ~]#

回復に失敗しました。このパスはブロックされています。 ! !

他の人は成功しましたが、私のテストは失敗し、メモリが解放されてクラッシュしました。ソースコードを変更する方法を教えてもらえますか?ここではいくつか疑問があります。後でテストして、まず共通のパラメータを記録します。

inode ファイルの状態を照会する: /usr/local/extundelete/bin/extundelete /dev/vda1 --inode 1311798

指定されたノードデータを復元します: /usr/local/extundelete/bin/extundelete /dev/vda1 --restore-inode 1311798

単一のファイルを復元する: /usr/local/extundelete/bin/extundelete /dev/vda1 --restore-file root/examples/extundelete-0.2.4.tar.bz2

ディレクトリを復元する: /usr/local/extundelete/bin/extundelete /dev/vda1 --restore-files root/examples

すべてのファイルを復元: /usr/local/extundelete/bin/extundelete /dev/vda1 --restore-all

誤って削除することによる事故を防ぐ

エイリアスを定義し、削除を要求

エイリアスalias rm='rm -i'を定義します。ファイルを削除する前にプロンプ​​トが表示されます。 -iオプションを使用して、削除するファイルを 1 つずつ確認します。ユーザーがyを入力した場合にのみ、ファイルが削除されます。ただし、 -fオプションを追加すると、この方法は無効になります。

rmを無効にして代わりにmvを使用する

システムでは、rm コマンドを直接使用してファイルを削除することはできません。指定されたリサイクル ディレクトリ /.delete にファイルを mv し、スケジュールされたタスクを使用して /.delete 内のファイルを毎週消去する必要があります。これは、手動でごみ箱を作成するのと同じです。

要約する

foremost を使用して復元する場合、ターゲット ディレクトリは別のディスク上のディレクトリにすることをお勧めします。削除されたファイルが存在するディスクにファイルを復元すると、復元前に誤って削除されたファイルが上書きされる可能性があります。

soduのフルネームには現在、 substitute user dosuper user doは通常、スーパーユーザーの権限を行使するために使用されますが、他の一般ユーザーも使用できる場合があります。したがって、 substitute user doと翻訳して他のユーザーを置き換える方が正確です。

foremost は、ext2、ext3、vfat、NTFS、ufs、jfs など、多くのファイル システムをサポートしていますが、特定の形式のファイルのみを回復できます。Extundelete は ext3 および ext4 ファイル システムのみをサポートしていますが、多くのファイル タイプを回復できます。

この記事でまとめた2つの復元ソフト以外にも、復元に使えるtestdiskやphotorecもあります。後からデータプライスレスを試すこともできます。慎重に削除してください。エイリアス方式を参考にしたり、 rm -rf無効にしたりすることで事故の発生を減らすことができます。

Linux 環境で rm によって誤って削除されたファイルを復元する方法についての記事はこれで終わりです。Linux で rm によって誤って削除されたファイルを復元する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Linuxはlsof/extundeleteツールを使用して、誤って削除されたファイルやディレクトリを復元します。
  • Linuxで削除されたファイルを回復するためのlsofコマンドの詳細な説明
  • Linuxで誤ってパッケージを削除した例
  • Linux grub 起動時の暗号化と削除の回復方法

<<:  CSS3 は 3D キューブの読み込み効果を作成します

>>:  Vue3のレスポンシブ原則の詳細な説明

推薦する

IE6/7 で絶対配置された要素が不可解に消えたりブロックされたりする問題を解決する方法

1. 絶対配置レイヤーの隣接フローティング レイヤーの幅が親レイヤーの幅と等しくなく、フロートがクリ...

データベースを削除せずにMySQLのすべてのテーブルを素早く削除する方法

この記事では、例を使用して、データベースを削除せずに MySQL 内のすべてのテーブルをすばやく削除...

XHTML ブロックレベルタグの概要

* 住所 - 住所* blockquote - ブロック引用* center - 中央揃えブロック*...

Linux gzip コマンドのファイル圧縮実装原理とコード例

gzip は、Linux システムでファイルの圧縮と解凍によく使用されるコマンドです。このコマンドで...

JavaScript における call、apply、bind の実装原則の詳細な説明

目次序文電話使用法成し遂げるシンプルな実装バージョン:アップグレード版:適用する使用法成し遂げるバイ...

MySQL はどのようにしてデータの整合性を確保するのでしょうか?

オンライン ビジネスにとってデータの一貫性と整合性が重要であることは明らかです。データが失われないよ...

ローカルストレージにブール型の値を保存する際の落とし穴を解決する

LocalStorageはブール値を保存します今日、ブール値データを保存するために localsto...

Linux で Sudo を使用して権限を委譲する

sudo 権限委譲の概要su スイッチ ID: su –l ユーザー名 –c 'コマンド&#...

親ページの更新を制御するために HTML で iframe を実装するためのアイデアとコード

1. 応用シナリオ親ページ a.jspサブページ b.jsp (ページ a に埋め込まれた ifra...

Nginx がフロントエンド リソースへのクロスドメイン アクセスの問題をどのように解決するかの詳細な説明

フロントエンドのクロスドメイン問題に2日間近く悩まされましたが、ようやくngnxを使って解決したので...

Linux でのマルチスレッドおよびマルチプロセス クラッシュのシミュレーションに関する簡単な説明

結論:マルチスレッド環境では、スレッドの 1 つがクラッシュすると、他のスレッド (プロセス全体) ...

Vueはプルダウンを実装してさらに読み込む

Element-UI に慣れた開発者なら、無限スクロールの InfiniteScroll が使いにく...

MySQL 8.0.20でNavicatをインストールして接続する方法と注意すべき点

注意事項1. まず、mysql インストール ディレクトリに次の内容の my.ini ファイルを作成...

JQueryはアニメーション効果の非表示と表示を実装します

この記事では、アニメーション効果の非表示と表示を実現するためのJQueryの具体的なコードを参考まで...