如何恢复linux下被rm后的文件
发布时间:2025-05-13 20:55:31 发布人:远客网络
一、如何恢复linux下被rm后的文件
linux的文件被rm删除是可以通过linux自带的文件恢复工具debugfs来进行恢复,但是只能恢复ext2文件系统的文件,不能恢复ext3文件系统的文件。
1,首先查看需要恢复的文件所在的文件系统
/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来杀死用户使用该分区的任何进程。
[xuwangcheng14@root]# debugfs/dev/xvda1
进入debugfs模式后输入lsdel后可以看到被删除的文件信息
stat显示某个节点所对应的文件信息,
如果被删除的文件很多,那么通过lsdel可看出文件的时间,然后自己判断进行恢复。
二、Linux系统下不小心使用rm命令删除的文件能有办法恢复吗
概述
可以恢复,使用系统自还工具debugfs来还原删除的文件
可以恢复,使用系统自还工具debugfs来还原删除的文件
1、查看一下当前系统版本号,及文件系统格式
Filesystem Type 1K-blocks Used Available Use% Mounted on
ext4 51475068 22730068 26123560 47%/
tmpfs tmpfs 3966808 68 3966740 1%/dev/shm
/dev/sda2 ext4 487652 42534 419518 10%/boot
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
-rw-r–r–. 1 root root 0 1月 4 15:22 my.txt
[root@localhost test]# rm-f my.txt
3、运用,系统自还工具debugfs来修复打开,刚刚被删除文件所在的分区,用ls加-d参数显示刚刚删除文件所在的目录
[root@localhost test]# debugfs
debugfs: open/dev/mapper/VolGroup-lv_root
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.
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后面的值
[root@localhost test]# dd if=/dev/mapper/VolGroup-lv_root of=/usr/local/test/my.txt bs=2944 count=1 skip=9438337
2944字节(2.9 kB)已复制,0.00989032秒,298 kB/秒
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=<字节数>:每次输出的字节数;
seek=<区块数>:一开始输出时,跳过指定的区块数;
skip=<区块数>:一开始读取时,跳过指定的区块数;
三、linux上恢复误删(使用rm-rf命令)的文件或目录
在Linux系统中,误用"rm-rf"命令删除文件或目录后,恢复文件的步骤取决于进程状态。以下是两种常见情况的处理方法:
1.如果文件被删除时,有进程持续访问,可以通过`lsof`命令检查该文件是否还在被进程占用。
2.如果进程还在,进入该进程的目录(/proc/pid/fd/),执行`cp`或`mv`命令恢复文件,例如:
二、进程已终止,需借助第三方工具
1.首先,停止可能导致数据覆盖的操作,如卸载设备、停止服务等。
2.对可能的分区进行备份,以防恢复失败。
3.安装并使用extundelete工具进行恢复。例如:
-通过`umount`或`fuser`命令卸载设备。
-使用`extundelete`扫描删除的文件,并执行恢复操作,如:
-单一文件恢复:`extundelete-r deleted_directory--find passwd`
-目录恢复:`extundelete-r deleted_directory`
-所有文件恢复:`extundelete-r deleted_directory--all`
-指定inode恢复:需注意文件名可能改变,恢复后需手动重命名。
请注意,恢复文件时要谨慎操作,确保数据完整性和正确性。如需更多关于extundelete的使用细节,请查阅其帮助文档。
本文由CSDN博主「JIANXIN.Y」原创,遵循CC 4.0 BY-SA版权协议。原文章链接:[Linux上恢复误删(使用rm-rf命令)的文件或目录]()。