rm 誤って削除したファイルの回復
問題の説明
Linux インスタンスでは、次の方法を使用して、rm命令误删除文件
ファイル且没有
が存在するディスク上の进行任何写操作
データを回復します。
# 执行不成功的
rm -Rf /
## 使用 --no-preserve-root 选项跳过安全模式
rm -rf --no-preserve-root /*
ファイル システムの 3 つの部分
Linux
で構成されていWindows
ます:文件系统
三部分
- ファイル名
- i ノード
- ブロック
ファイル名 | ファイルのメタデータ情報を保存する | 実際にデータを保存する |
---|---|---|
a.txt | –>inode | –> ブロック |
block块
:実際にデータが保存されている場所
逻辑删除
:偽の削除(本の目次を削除するだけと同等)
なぜコピーよりも削除のほうが早いのでしょうか?
ファイルを誤って削除した後もプロセスが残っています
https://www.lxlinux.net/1124.html
# 查看当前正在使用的、已被删除的文件
lsof | grep deleted
幸いなことに、これは事実であり进程还存在
、回復操作が開始されます。
回復する
# 恢复命令
cp /proc/pid/fd/1/指定目录/文件名 /tmp/恢复/
「 」と入力し进程目录
、通常は「 」と入力し/proc/pid/fd/
、ファイルを指定された場所にコピーします
復旧作業
extundelete をインストールする
参考: https://www.lxlinux.net/8012.html
ext4
ファイル システム上のファイルを削除するにはextundelete
回復を使用できます。
ext3
ファイル システム上のファイルを削除するには回復を使用できますext3grep
。
windows
誤って削除したファイルを回復するにはfinal data v2.0汉化版
:easyrecovery
extundelete
公式ウェブサイト: http://extundelete.sourceforge.net/
extundelete
このツールはext3
、 またはext4
パーティションから回復できます已删除的文件
。過去
extundelete
に削除されたパーティションにファイルが保存されている場合、削除された特定のファイルを正常に復元できるという保証はありません。このツールはファイル システムから一時的に回復します。これを使用して、誤って削除したファイルを回復してみることができます。分区日志中的信息
尝试恢复
extundelete
不支持
xfs
误删文件
TestDisk
xfs
yum install extundelete
# 检查是否安装有extundelete工具
rpm -qa extundelete
# yum安装extundelete
yum install -y extundelete
# 查看extundelete版本
extundelete -v
extundelete をコンパイルしてインストールする
# 安装依赖包
yum -y install e2fsprogs-libs e2fsprogs e2fsprogs-devel
# 下载压缩安装包
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
# 备用下载地址
wget https://raw.githubusercontent.com/omaidb/qiaofei_notes/main/shell_code/extundelete/extundelete-0.2.4.tar.bz2
# 解压
tar -jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
# 构建编译选项
./configure
# 编译安装
make && make install
# 检查是否安装成功
extundelete -v
extundelete 共通パラメータ
その中でパラメータ(オプション)は次のとおりです。
パラメータ | 説明する |
---|---|
–バージョン、-[vV] | ソフトウェアのバージョン番号を表示する |
-ヘルプ | ソフトウェアのヘルプ情報を表示する |
–スーパーブロック | スーパーブロック情報を表示する |
-ジャーナル | ログ情報を表示する |
–dtime後 | 時間パラメータ。一定期間後に削除されるファイルまたはディレクトリを示します。 |
–dtime 前 | 時間パラメータ。一定期間前に削除されたファイルまたはディレクトリを示します。 |
アクション:
パラメータ | 説明する |
---|---|
–inode ino | ノード「ino」に関する情報を表示します |
–ブロックブロック | データブロック「blk」に関する情報を表示します |
–restore-inode ino[,ino,…] | 復元コマンド パラメーター。ノード「ino」のファイルを復元することを意味します。復元されたファイルは、ノード番号を拡張子として使用して、現在のディレクトリの RESTORED_FILES フォルダーに自動的に配置されます。 |
–restore-file 'パス' | リカバリ コマンド パラメータ。指定されたパス内のファイルがリカバリされ、リカバリされたファイルが現在のディレクトリの下の RECOVERED_FILES ディレクトリに配置されることを示します。 |
–restore-files 'パス' | Restore コマンド パラメータ。パスにリストされているすべてのファイルが復元されることを示します。 |
-すべての復元 | リカバリ コマンド パラメータ。すべてのディレクトリとファイルのリカバリが試行されることを示します。 |
-j ジャーナル | 指定されたファイルから拡張ログを読み取ることを示します |
-b ブロック番号 | 以前にバックアップしたスーパー ブロックを使用してファイル システムを開くことを示します。通常、既存のスーパー ブロックが現在必要なファイルであるかどうかを確認するために使用されます。 |
-B ブロックサイズ | データ ブロック サイズを指定してファイル システムを開きます。通常、サイズがすでにわかっているファイルを表示するために使用されます。 |
ファイルを誤って削除した後立即要做的事情
ヒント:
误删除文件
最後に、第一
最初に行うことは、ファイルの内容を誤って削除する立即停止继续写入数据
ことです。避免
被覆盖
extundelete
ファイルをリカバリするときに不能
自動的に作成され空文件
ます目录
。extundelete
ツールをインストールします。ツールを に切勿
インストールします。にインストールするか、 と一緒にインストールすることをお勧めします。extundelete
误删文件所在磁盘
系统盘
新的数据盘
- このツールを使用して削除されたファイルを復元する後続の操作では、
umount
パーティションのマウント操作をキャンセルするか、只读方式
パーティションをマウントするコマンドを実行する必要があるため、システム ディスク パーティションに対してコマンドを実行することはできませんumount
。 系统盘
システムの误删文件
データリカバリはliveCD
起動後に只读方式
マウントする必要があります要恢复的系统盘
。
1. dd コマンドを使用して現在のパーティションをバックアップします。
dd コマンドを使用して現在のパーティションをバックアップし、サードパーティ ソフトウェアの回復失敗によるデータ損失を防ぎます。データが非常に重要な場合に適しています。このテストではバックアップはありません。バックアップが行われている場合は、次の方法が考えられます。
# 通过dd命令对当前分区进行备份
dd if=/path/filename of=/dev/vdc1
2. ファイルを回復する必要があるパーティションをアンマウントするか、読み取り専用モードでマウントします。
削除されたファイルが存在するディスク パーティションをアンマウントします。
# 查看当前系统磁盘分区
df -h
# 卸载需要恢复文件的分区
## umount 挂载点
umount /mnt
# 查看谁在占用挂载点
## -m 显示挂载点
## -u 显示用户
## -v 显示详情
fuser -muv /mnt
# 识别和终止正在访问指定文件或文件系统的进程
## -m:指定匹配模式为挂载点,只管挂载点相关的进程
## -v:显示详细信息,包括进程的命令行参数
## -i:交互式模式,要求在终止进程之前进行确认
## -k:终止进程
fuser -m -v -i -k /mnt
# 以只读的方式挂载
## remount 重新挂载
## ro 只读方式挂载
mount -o remount,ro /mnt
3. i ノード番号を確認する
拡張機能:
ext4
パーティションのルート ディレクトリのinode
値は次のとおりです。2
xfs
パーティションのルート ディレクトリのinode
値は次のとおりです。64
本示例
を使用して根分区
作成されLVM
ます96
# 查看etx4文件系统磁盘的inode值
ls -id /mnt/data/
# 查看xfs文件系统中/boot的inode值
ls -id /boot/
定位被误删的文件
段階的に検索する必要がある場合は、まず次から根分区 inode
検索できます。
# 查看inode号:
## 常识:每个文件,有一个inode号。
ls -i a.txt
# 查看inode中的文件属性
## 通过stat命令查看inode中包含的内容
stat a.txt
4. 削除されたデータ情報の表示
https://blog.51cto.com/bosszhang/2069542
# 通过inode结点查看被删除的文件名字:
# 查看sdb1分区根目录下面可被恢复的文件及文件夹
# 查询可恢复的数据,带有Deleted标记的表示已经删除的文件
## --inode 2 显示inode号为2的文件的信息
# extundelete 磁盘设备路径 --inode 2
extundelete /dev/sdb1 --inode 2
システム表示は次のようになります。
図にあるものはDeleted状态
です被删除的数据
。次へ
復元します。デフォルトは以下に。被删除数据
RECOVERED_FILES目录
该RECOVERED_FILES目录
当前目录
ファイルを回復する
https://developer.aliyun.com/article/563603
指定した i ノード番号のファイルを復元します
# 恢复对应inode的文件
extundelete 磁盘镜像文件 --restore-inode 21
指定したファイル名を復元する
# 指定文件名test.txt尝试恢复
extundelete /dev/sdb1 --restore-file test.txt
指定したディレクトリを復元する
空目录不会被恢复
# 恢复指定目录
extundelete /dev/sdb1 --restore-directory /dir1
回復可能なファイルをすべて回復する
# 恢复该磁盘下的所有可恢复文件
extundelete 磁盘设备路径 --restore-all
システム表示は次のようになります。
指定した時刻からファイルを復元する
Unix时间戳
変換: https://tool.chinaz.com/tools/unixtime.aspx
指定したタイムスタンプより前に削除されたファイルを復元します
# 恢复指定时间戳之前删除的文件
## --before UNIX时间戳,从1970年1月1日 00:00:00 UTC 起的秒数。
extundelete --before 1451288304 --restore-all /dev/sdb1
指定したタイムスタンプ以降に削除されたファイルを復元します
# 恢复指定时间戳之后删除的文件
## --after UNIX时间戳
extundelete --after 1451288304 --restore-all /dev/sdb1
回復されたファイルを表示する
# 查看恢复出的文件
ls RECOVERED_FILES/