Linux 恢复删除文件
Linux下的rm命令太可怕了,一不小心 rm -rf / 那就悲剧了,请慎用rm -rf。
如果一不小心删除重要文件,后续不对该路径文件操作,可以通过相关命令找回被删文件。
原理主要是删除的文件并没有实际上从硬盘上抹去,只是inode索引删除了相关的信息(单链表节点删除实现),因此只要找到刚删除文件的block上,就可以恢复已经删除的文件。
一. 查看分区
df -T Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/sda1 ext4 41284928 38206612 981164 98% / tmpfs tmpfs 1961248 10240 1951008 1% /dev/shm /dev/sda5 ext4 119724260 6428840 107213784 6% /data /dev/sda2 ext4 41284928 799900 38387876 3% /usr/local
二. ext3
sudo debugfs open /dev/sda1 #打开分区 ls -d /home/test/src #显示该目标删除文件inode 819307 (12) . 819306 (4084) .. <790528> (4072) bosstest.cpp <792294> (4052) btest.cpp <792214> (4032) qwd_kettas.pb.cc logdump -i <790528> #查看该文件日志内容 ... [blocks] 12345 #12345为存放bosstest.cpp数据块地址 sudo dd if=/dev/sda1 of=/tmp/my1.cpp count=1 skip=12345 #读取12345处数据至my1.cpp中
三. ext4
debugfs只能恢复ext3系统文件,extundelete支持ext3/ext4文件系统的恢复。
sudo yum install -y e2fsprogs #安装依赖库 sudo extundelete --inode 819203 /dev/sda1 #查找指定目录下删除文件 File name | Inode number | Deleted status . 819307 .. 819306 bosstest.cpp 790528 Deleted btest.cpp 792294 Deleted qwd_kettas.pb.cc 792214 Deleted sudo extundelete --restore-inode 790528 /dev/sda1 #恢复指定inode文件,恢复文件在./RECOVERED_FILES sudo extundelete /dev/sda1 --restore-all #恢复/dev/sda1分区下所有文件
大多数情况下,会出现以下提示:Unable to restore inode 792214 (file.792214): Space has been reallocated. 由于文件系统被覆盖,已经无法恢复文件。
参考链接: