Linux系统下不小心使用rm命令删除的文件能有办法恢复吗?
有什么办法或者用什么命令?
辛苦一下午写的程序打算用mv重命名的,不知道怎么的用了rm,好可怜! 展开
2011-01-06 · 百度认证:昆山开心盒子软件有限公司官方账号
命令行模式下输入指令mount
[xuwangcheng14@root]#?mount/dev/xvda1?on?/?type?ext2?(rw,errors=remount-ro)proc?on?/proc?type?proc?(rw,noexec,nosuid,nodev)sysfs?on?/sys?type?sysfs?(rw,noexec,nosuid,nodev)由上知,/dev/xvda1挂载在/下,即根目录,且文件系统是ext2
2、将要找回的文件所在的分区重新挂载成只读(因为这样比较安全,可以防止因新的文件写入该分区而导致无法找回文件)
[xuwangcheng14@root]#?mount?-n?-o?remount,ro?/dev/xvda1如果不能重新挂载,那么一定有用户正在使用该分区中的文件,我们可以使用指令:fuser?-m?-v?/dev/xvda1来查看当前哪个用户正在使用该分区中的文件,然后使用fuser?-k?-m?-v?/dev/xvda1来杀死用户使用该分区的任何进程。
3、使用工具恢复文件
?[xuwangcheng14@root]#?debugfs?/dev/xvda1debugfs?1.42?(29-Nov-2011)debugfs:?lsdel进入debugfs模式后输入lsdel后可以看到被删除的文件信息
stat显示某个节点所对应的文件信息,恢复文件使用dump?文件路径。如果被删除的文件很多,那么通过lsdel可看出文件的时间,然后自己判断进行恢复。
当然还可以使用数据恢复软件,比如嗨格式数据恢复大师,嗨格式数据恢复大师是一款专家级数据恢复软件、支持误删文件恢复、回收站清空文件恢复、U盘、硬盘、SD卡、储存卡等各类存储设备数据恢复、同时支持恢复数据预览、深度扫描恢复等功能、操作简单、恢复成功率高、可免费下载试用扫描。?
概述
可以恢复,使用系统自还工具debugfs来还原删除的文件
步骤详解
1、 查看一下当前系统版本号,及文件系统格式
[root@localhost ~]# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 51475068 22730068 26123560 47% /
tmpfs tmpfs 3966808 68 3966740 1% /dev/shm
/dev/sda2 ext4 487652 42534 419518 10% /boot
/dev/mapper/VolGroup-lv_home
ext4 901188872 20070036 835334364 3% /home
2、新建一个文件夹及文件my.txt,然后删除
[root@localhost local]# mkdir test
[root@localhost local]# cd test
[root@localhost test]# touch my.txt
[root@localhost test]# ll
总用量 0
-rw-r–r–. 1 root root 0 1月 4 15:22 my.txt
[root@localhost test]# rm -f my.txt
[root@localhost test]# ll
总用量 0
3、运用,系统自还工具debugfs来修复 打开,刚刚被删除文件所在的分区,用ls 加-d参数显示刚刚删除文件所在的目录
[root@localhost test]# debugfs
debugfs 1.41.12 (17-May-2010)
debugfs: open /dev/mapper/VolGroup-lv_root
debugfs: ls -d /usr/local/test/
2378807 (12) . 2098175 (4084) .. <2378808> (4072) my.txt
4、显示有<>尖括号的就是我们要找的文件Inode 号 执行logdump –i <2378808>,然后输入“quit”退出debugfs
debugfs: logdump -i <2378808>
Inode 2378808 is at group 290, block 9438337, offset 2944
Journal starts at block 16826, transaction 2237277
No magic number at block 30648: end of journal.
debugfs: quit
5、执行以下命令,进行恢复,bs与skip的值分别取自:block 9438337, offset 2944
dd if=/dev/mapper/VolGroup-lv_root of=/usr/local/test/my.txt bs=2944 count=1 skip=9438337
bs对应上面的offset后面的值,skip对应block后面的值
debugfs: quit
[root@localhost test]# dd if=/dev/mapper/VolGroup-lv_root of=/usr/local/test/my.txt bs=2944 count=1 skip=9438337
记录了1+0 的读入
记录了1+0 的写出
2944字节(2.9 kB)已复制,0.00989032 秒,298 kB/秒
[root@localhost test]# ls
my.txt
至此,刚删除的数据已恢复
拓展内容
linux dd命令
Linux dd命令用于读取、转换并输出数据。
dd可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
参数说明:
if=文件名:输入文件名,缺省为标准输入。即指定源文件。
of=文件名:输出文件名,缺省为标准输出。即指定目的文件。
ibs=bytes:一次读入bytes个字节,即指定一个块大小为bytes个字节。
obs=bytes:一次输出bytes个字节,即指定一个块大小为bytes个字节。
bs=bytes:同时设置读入/输出的块大小为bytes个字节。cbs=bytes:一次转换bytes个字节,即指定转换缓冲区大小。
skip=blocks:从输入文件开头跳过blocks个块后再开始复制。
seek=blocks:从输出文件开头跳过blocks个块后再开始复制。
count=blocks:仅拷贝blocks个块,块大小等于ibs指定的字节数。
选项说明:
bs=<字节数>:将ibs(输入)与欧巴桑(输出)设成指定的字节数;
cbs=<字节数>:转换时,每次只转换指定的字节数;
conv=<关键字>:指定文件转换的方式;
count=<区块数>:仅读取指定的区块数;
ibs=<字节数>:每次读取的字节数;
obs=<字节数>:每次输出的字节数;
of=<文件>:输出到文件;
seek=<区块数>:一开始输出时,跳过指定的区块数;
skip=<区块数>:一开始读取时,跳过指定的区块数;
--help:帮助;
--version:显示版本信息。
linux的文件被rm删除是可以通过linux自带的文件恢复工具debugfs来进行恢复,但是只能恢复ext2文件系统的文件,不能恢复ext3文件系统的文件。
1,首先查看需要恢复的文件所在的文件系统
命令行模式下输入指令mount
[xuwangcheng14@root]# mount
/dev/xvda1 on / type ext2 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
由上知,/dev/xvda1挂载在/下,即根目录,且文件系统是ext2
2,将要找回的文件所在的分区重新挂载成只读
(因为这样比较安全,可以防止因新的文件写入该分区而导致无法找回文件)
[xuwangcheng14@root]# mount -n -o remount,ro /dev/xvda1
如果不能重新挂载,那么一定有用户正在使用该分区中的文件,我们可以使用指令:fuser -m -v /dev/xvda1来查看当前哪个用户正在使用该分区中的文件,然后使用fuser -k -m -v /dev/xvda1来杀死用户使用该分区的任何进程。
3,使用debugfs工具恢复文件
[xuwangcheng14@root]# debugfs /dev/xvda1
debugfs 1.42 (29-Nov-2011)
debugfs: lsdel
进入debugfs模式后输入lsdel后可以看到被删除的文件信息
stat显示某个节点所对应的文件信息,
恢复文件使用dump 文件路径。
如果被删除的文件很多,那么通过lsdel可看出文件的时间,然后自己判断进行恢复。
2、新建一个文件夹及文件my.txt,然后删除
3、运用,系统自还工具debugfs来修复 打开,刚刚被删除文件所在的分区,用ls 加-d参数显示刚刚删除文件所在的
4、显示有<>尖括号的就是我们要找的文件Inode 号 执行logdump –i <2378808>,然后输入“quit”退出
5、执行以下命令,进行恢复,bs与skip的值分
bs对应上面的offset后面的值,skip对应block后面的值
至此,刚删除的数据已恢复
linux dd命令
Linux dd命令用于读取、转换并输出数据。
dd可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
ext2文件系统用debugfs命令即可恢复;ext3文件系统只要数据块未被占用也能恢复,若发现得不及时,可能就恢复不了了。ext3文件系统恢复,可使用ext3grep软件,我曾使用这个软件恢复过数据,还是不错的。