假设文件是在” /home/linux/shl/sy_linux/路径下
参考:百度知道https://zhidao.baidu.com/question/213248989.html
我要恢复的文件是:root@ubuntu:/home/linux/shl/sy_linux/pthread_test.c
linux@ubuntu:~/shl/sy_linux$ df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/sda1 ext4 40251776 22367924 15839180 59% /
udev devtmpfs 505332 4 505328 1% /dev
tmpfs tmpfs 205292 972 204320 1% /run
none tmpfs 5120 0 5120 0% /run/lock
none tmpfs 513228 200 513028 1% /run/shm
/dev/sdb1 ext4 5159552 141288 4756172 3% /home/linux/ubuntu-1
.host:/ vmhgfs 181530620 96417344 85113276 54% /mnt/hgfs
df - T 找到当前文件所在磁盘分区
运用,系统自还工具debugfs来修复 打开,刚刚被删除文件所在的分区,用ls 加-d参数显示刚刚删除文件所在的目录
在此之前先进入管理员模式: sudo su
linux@ubuntu:~/shl/sy_linux$ debugfs
debugfs 1.42 (29-Nov-2011)
debugfs: open /dev/sdb1
/dev/sdb1: Permission denied while opening filesystem
不然会有上述报错,显示无权限打开
linux@ubuntu:~/shl/sy_linux$ sudo su
[sudo] password for linux:
root@ubuntu:/home/linux/shl/sy_linux# debugfs
debugfs 1.42 (29-Nov-2011)
debugfs: open /dev/sdb1
debugfs: ls -d /home/linux/shl/sy_linux/
/home/linux/shl/sy_linux/: File not found by ext2_lookup
好吧,我可能时间长了,文件以及找不到了!!!!根本没有啊!
或者是我路径找错了!!!
然后我换个地方打开 /dev/sda1
debugfs: open /dev/sda1
debugfs: ls -d /home/linux/shl/sy_linux/
然后看到如下界面数据:
2171092 (12) . 2107347 (12) .. 2136755 (20) openfile.c
2136636 (20) write_test.c 2140733 (16) write 2159955 (20) pid.c
2140780 (20) file1.txt 2140768 (16) pid 2143056 (20) file2.txt
2097430 (3940) a.out <2165564> (3916) pthread_test.c~
//回车
//输入
debugfs: logdump -i <2165564>
Inode 2165564 is at group 264, block 8392825, offset 3456
Journal starts at block 14, transaction 948674
No magic number at block 7828: end of journal.
debugfs: quit
root@ubuntu:/home/linux/shl/sy_linux# dd if=/dev/sda1 of=/home/linux/shl/sy_linux/pthread_test.c bs=3456 count=1 skip=8392825
1+0 records in
1+0 records out
3456 bytes (3.5 kB) copied, 0.000610909 s, 5.7 MB/s
root@ubuntu:/home/linux/shl/sy_linux# ls
a.out file2.txt pid pthread_test.c write_test.c
file1.txt openfile.c pid.c write
root@ubuntu:/home/linux/shl/sy_linux#
上述步骤及命令可以总结如下:具体参照上列表
1:打开文件分区
debugfs: open /dev/sda1
2:查看当前文件夹下可以恢复的所有文件列表
debugfs: ls -d /home/linux/shl/sy_linux/
3:找到对应的参数带入命令
logdump -i <2165564>
4:退出debugfs,开始恢复文件
dd if=/dev/sda1 of=/home/linux/shl/sy_linux/pthread_test.c bs=3456 count=1 skip=8392825
4:查看结果
ls