linux下的数据恢复软件有哪些
【转】Linux 下的文件一旦被删除,是难以恢复的。
尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。
不过,对于家庭单机使用的Linux ,或者误删文件后及时补救,还是可以恢复的。
1 、Ext2文件系统结构的简单介绍 在Linux 所用的Ext2文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。
每个文件还有一个节点,节点中包含有文件所有者,读写权限,文件类型等信息。
对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。
如果文件大于12个块,那么节点在12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256 个文件数据块的块号(Ext2fs中每个块号占用4 字节,这样一个块中所能存储的块号就是1024/4=256)。
如果有更大的文件,那么还会在节点中出现二级间接块和三级间接块。
2 、恢复被误删文件的方法 大多数Linux 发行版都提供一个debugfs 工具,可以用来对Ext2文件系统进行编辑操作。
不过在使用这个工具之前,还有一些工作要做。
首先以只读方式重新挂载被误删的文件所在分区。
使用如下命令:(假设文件在/usr分区) mount –r –n –o remount /usr -r 表示只读方式挂载;-n表示不写入/etc/mtab,如果是恢复/etc上的文件,就加上这个参数。
如果系统说xxx partion busy,可以用fuser 命令查看一下是哪些进程使用这个分区上的文件: fuser –v –m /usr 如果没有什么重要的进程,用以下命令停掉它们: fuser -k–v –m /usr 然后就可以重新挂载这些文件系统了。
如果是把所有的文件统一安装在一个大的/ 分区当中,可以在boot提示符下用linux single进入单用户模式,尽量减少系统进程向硬盘写入数据的机会,要不干脆把硬盘挂在别的机器上。
另外,恢复出来的数据不要写到/ 上面,避免破坏那些有用的数据。
如果机器上有dos/windows ,可以写到这些分区上面: mount –r –n /dev/hda1 /mnt/had 然后就可以执行debugfs :(假设Linux 在 /dev/hda5) #debugfs /dev/hda5 就会出现debugfs 提示符debugfs : 使用lsdel 命令可以列出很多被删除的文件的信息: debugfs :lsdel debugfs : 2692 deleted inodes found. Inode Owner Mode Size Blocks Time deleted 164821 0 100600 8192 1/ 1 Sun May 13 19 :22:46 2001 ………………………………………………………… 36137 0 100644 4 1/ 1 Tue Apr 24 10 :11:15 2001 196829 0 100644 149500 38/ 38 Mon May 27 13 :52:04 2001 debugfs : 列出的文件有很多(这里找到2692个),第一字段是文件节点号,第二字段是文件所有者,第三字段是读写权限,接下来是文件大小,占用块数,删除时间。
然后就可以根据文件大小和删除日期判断那些是我们需要的。
比如我们要恢复节点是196829的文件: 可以先看看文件数据状态: debugfs :stat Inode : 196829 Type: regular Mode : 0644 Flags : 0x0 Version:1 User: 0 Group: 0 Size : 149500 File ACL: 0 Directory ACL: 0 Links : 0 Blockcount : 38 Fragment: Address: 0 Number : 0 Size : 0 ctime : 0x31a9a574 —— Mon May 27 13:52:04 2001 atime : 0x31a21dd1 —— Tue May 21 20:47:29 2001 mtime : 0x313bf4d7 —— Tue Mar 5 08 :01:27 2001 dtime : 0x31a9a574 —— Mon May 27 13:52:04 2001 BLOCKS: 594810 594811 594814 594815 594816 594817 …………………………………。
TOTAL : 38 然后就可以用dump指令恢复文件: debugfs :dump /mnt/hda/01.sav 这样就把文件恢复出来了。
退出debugfs : debugfs :quit 另一种方法是手工编辑inode : debugfs :mi Mode [0100644] User ID [0] Group ID [0] Size [149500] Creation time [0x31a9a574] Modification time [0x31a9a574] Access time [0x31a21dd1] Deletion time [0x31a9a574] 0 Link count [0] 1 Block count [38] File flags [0x0] Reserved1 [0] File acl [0] Directory acl [0] Fragment address [0] Fragment number [0] Fragment size [0] Direct Block #0 [594810] ……………………………。
Triple Indirect Block [0] 使用mi指令后每次显示一行信息以供编辑,其它行可以直接按回车表示确认,把deletion time 改成0 (未删除),Link count改成1.改好后退出debugfs : debugfs :quit 然后用fsck检查/dev/hda5 fsck /dev/hda5 程序会说找到丢失的数据块,放在lost+found里面。
这个目录里的文件就是我们要的东东。
如何恢复被删除的LINUX文件
展开全部 文件不小心删除了利用数据恢复工具还是有办法找回的,文件删除恢复操作步骤如下:1、下载互盾数据恢复软件进行安装。
2、点击进入误删除文件,选中要恢复的文件所在的硬盘以及文件夹,点击下一步。
3、扫描后会出现你所丢失的文件,点击下一步。
4、在文件预览中,勾选想要恢复的文件,并设置存储路径。
切记存储路径暂时不可与该内存卡路径相同,以免造成数据覆盖。
...
Linux操作系统下如何能恢复误删除的文件?
作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。
尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数据。
不过,对于家庭单机使用的Linux,或者误删文件后及时补救,还是可以恢复的。
1.Ext2文件系统结构的简单介绍 在Linux所用的Ext2文件系统中,文件是以块为单位存储的,默认情况下每个块的大小是1K,不同的块以块号区分。
每个文件还有一个节点,节点中包含有文件所有者,读写权限,文件类型等信息。
对于一个小于12个块的文件,在节点中直接存储文件数据块的块号。
如果文件大于12个块,那么节点在12个块号之后存储一个间接块的块号,在这个间接块号所对应的块中,存储有256个文件数据块的块号(Ext2fs中每个块号占用4字节,这样一个块中所能存储的块号就是1024/4=256)。
如果有更大的文件,那么还会在节点中出现二级间接块和三级间接块。
2。
恢复被误删文件的方法 大多数Linux发行版都提供一个debugfs工具,可以用来对Ext2文件系统进行编辑操作。
不过在使用这个工具之前,还有一些工作要做。
首先以只读方式重新挂载被误删的文件所在分区。
使用如下命令:(假设文件在/usr分区) mount –r –n –o remount /usr -r表示只读方式挂载;-n表示不写入/etc/mtab,如果是恢复/etc上的文件,就加上这个参数。
如果系统说xxx partion busy,可以用fuser命令查看一下是哪些进程使用这个分区上的文件: fuser –v –m /usr 如果没有什么重要的进程,用以下命令停掉它们: fuser -k –v –m /usr 然后就可以重新挂载这些文件系统了。
如果是把所有的文件统一安装在一个大的/分区当中,可以在boot提示符下用linux single进入单用户模式,尽量减少系统进程向硬盘写入数据的机会,要不干脆把硬盘挂在别的机器上。
另外,恢复 mount –r –n /dev/hda1 /mnt/had 然后就可以执行debugfs:(假设Linux在 /dev/hda5) #debugfs /dev/hda5 就会出现debugfs提示符debugfs: 使用lsdel命令可以列出很多被删除的文件的信息: debugfs:lsdel debugfs: 2692 deleted inodes found. Inode Owner Mode Size Blocks Time deleted 164821 0 100600 8192 1/ 1 Sun May 13 19:22:46 2001 ………………………………………………………………………………… 36137 0 100644 4 1/ 1 Tue Apr 24 10:11:15 2001 196829 0 100644 149500 38/ 38 Mon May 27 13:52:04 2001debugfs: 列出的文件有很多(这里找到2692个),第一字段是文件节点号,第二字段是文件所有者,第三字段是读写权限,接下来是文件大小,占用块数,删除时间。
然后就可以根据文件大小和删除日期判断那些是我们需要的。
比如我们要恢复节点是196829的文件: 可以先看看文件数据状态: debugfs:stat Inode: 196829 Type: regular Mode: 0644 Flags: 0x0 Version: 1 User: 0 Group: 0 Size: 149500 File ACL: 0 Directory ACL: 0 Links: 0 Blockcount: 38 Fragment: Address: 0 Number: 0 Size: 0 ctime: 0x31a9a574 -- Mon May 27 13:52:04 2001 atime: 0x31a21dd1 -- Tue May 21 20:47:29 2001 mtime: 0x313bf4d7 -- Tue Mar 5 08:01:27 2001 dtime: 0x31a9a574 -- Mon May 27 13:52:04 2001 BLOCKS: 594810 594811 594814 594815 594816 594817 …………………………………. TOTAL: 38然后就可以用dump指令恢复文件: debugfs:dump /mnt/hda/01.sav这样就把文件恢复出来了。
退出debugfs: debugfs:quit 另一种方法是手工编辑inode: debugfs:mi Mode [0100644] User ID [0] Group ID [0] Size [149500] Creation time [0x31a9a574] Modification time [0x31a9a574] Access time [0x31a21dd1] Deletion time [0x31a9a574] 0 Link count [0] 1 Block count [38] File flags [0x0] Reserved1 [0] File acl [0] Directory acl [0] Fragment address [0] Fragment number [0] Fragment size [0] Direct Block #0 [594810] ……………………………. Triple Indirect Block [0]使用mi指令后每次显示一行信息以供编辑,其它行可以直接按回车表示确认,把deletion time改成0(未删除),Link count改成1。
改好后退出debugfs: debugfs:quit 然后用fsck检查/dev/hda5 fsck /dev/hda5 程序会说找到丢失的数据块,放在lost+found里面。
这个目录里的文件就是我们要的东东。
linux 下 rm 之后的文件还能恢复吗?
理论上rm删除的文件是还能恢复的。
删掉文件其实只是将指向数据块的索引点(information nodes)释放,只要不被覆盖,数据其实还在硬盘上,关键在于找出索引点,然后将其所指数据块内的数据抓出,再保存到另外的分区。
在用rm误删除文件后,我们要做的第一件事就是保证不再向误删文件的分区写数据。
通常我们可以有以下几种选择:1、借助工具。
2、自己写程序。
你需要会编程并了解对应的文件系统。
3、如果数据很有用,也许可以找专业公司抢救。
工具1、The Sleuth Kit 2、Foremost 3、一个全能的工具,Finaldata,可以恢复unix/linux/dos下误删的文件。
对于unix,支持这些产品, Solaris、AIX和HP-UX。
对于linux,支持EXT2的文件系统。
对于dos,支持FAT 12/16/32, NTFS 4/5/5.1 的文件系统。
4、如果文件系统是ext2(对ext3无效):ext3的删除机制是直接把 inode data 删除了,所以造成 ext3 无法反删除(ext3设计为无法恢复被删除的文件)。
unrmext2eddebugfs(undel lsdel )recoverMidnight Commander(mc)e2undeltct5、如果文件系统是FAT32或者NTFS:EasyRecoveryFinaldata6、freebsd如果使用了rm,可以试一下undelete这个命令.7、当进程打开了某个文件时,只要该进程保持打开该文件,lsof可以用来恢复删除文件。
如何在linux下恢复被误删除的文件
yum install –y e2fsprogs-devel5执行make&& make install命令,这样就完成了extundelete的安装,说明未安装extundelete的依赖包e2fsprogs4安装依赖包: error: Can',开机后通过lsblk查看一下(sdb)。
如何在Linux系统中恢复误删除的文件8为新硬盘分区如何在Linux系统中恢复误删除的文件9格式化分区。
如何在Linux系统中恢复误删除的文件根据inode号对指定文件进行恢复。
如何在Linux系统中恢复误删除的文件验证恢复文件和原始文件的一致性.4,可通过fuser命令解决。
如何在Linux系统中恢复误删除的文件再次尝试卸载设备即可成功。
如何在Linux系统中恢复误删除的文件恢复数据——使用inode方式查看被删文件inode号。
如何在Linux系统中恢复误删除的文件10创建挂载点并挂载sdb1如何在Linux系统中恢复误删除的文件11模拟事故现场——拷贝一些文件或目录到sdb1如何在Linux系统中恢复误删除的文件模拟事故现场——删除刚拷贝的东西如何在Linux系统中恢复误删除的文件恢复数据——卸载设备(防止数据被写入)如何在Linux系统中恢复误删除的文件这里出现个小问题,设备繁忙无法卸载。
如何在Linux系统中恢复误删除的文件恢复数据——再试试文件名方式,再次恢复成功安装extundelete工具并验证是否安装完好;t find ext2fs library./configure若报错信息为configure.bz2安装包,2解压tar xf extundelete-0.2.4.tar.bz23预安装.2.tar,下载extundelete-0。
6能够正确显示软件版本号,应该没什么问题。
如何在Linux系统中恢复误删除的文件7模拟事故现场——创建一个新分区并挂载在Vmware中新增一块硬盘。
md5值完全一致,恢复成功
如何恢复Linux上删除的文件?
1、 查看一下当前系统版本号,及文件系统格式2、新建一个文件夹及文件my.txt,然后删除3、运用,系统自还工具debugfs来修复 打开,刚刚被删除文件所在的分区,用ls 加-d参数显示刚刚删除文件所在的4、显示有尖括号的就是我们要找的文件Inode 号 执行logdump –i ,然后输入“quit”退出5、执行以下命令,进行恢复,bs与skip的值分bs对应上面的offset后面的值,skip对应block后面的值至此,刚删除的数据已恢复linux dd命令Linux dd命令用于读取、转换并输出数据。
dd可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。
Linux系统下使用Lsof恢复误删除的文件怎么办?
先介绍一些文件的基本概念, 文件实际上是一个指向inode的链接, inode链接包含了文件的所有属性, 比如权限和所有者, 数据块地址(文件存储在磁盘的这些数据块中)。
当你删除(rm)一个文件, 实际删除了指向inode的链接, 并没有删除inode的内容。
进程可能还在使用。
只有当inode的所有链接完全移去, 然后这些数据块将可以写入新的数据。
proc文件系统可以协助我们恢复数据。
每一个系统上的进程在/proc都有一个目录和自己的名字: 里面包含了一个fd(文件描述符)子目录(进程需要打开文件的所有链接)。
如果从文件系统中删除一个文件, 此处还有一个inode的引用: /proc/进程号/fd/文件描述符 接下来, 你需要知道打开文件的进程号(pid)和文件描述符(fd)。
这些都可以通过lsof工具方便获得, lsof的意思是“list open files, 列出(进程)打开的文件”。
然后你将可以从/proc拷贝出需要恢复的数据。
下面介绍在Fedora Core 5系统上使用lsof恢复误删的文件: 环境 主机: 使用微睦独立主机, 一台基于vmware的虚拟独立主机。
系统: Fedora Core 5 内核: 2.6.16-1.2122_FC5 lsof版本: [zhaoke@fedora5 ~]$ /usr/sbin/lsof -v lsof version information: revision: 4.77 预备工作: 如果你的系统没有安装lsof, 可以从作者网站或pbone获得。
恢复过程: 首先, 我们需要创建一个文本文件, 删除然后恢复: [zhaoke@fedora5 ~]$ man lsof | col -b > myfile 然后看一下文件内容: [zhaoke@fedora5 ~]$ less myfile 你可以看到lsof所有的文本帮助信息。
现在按Ctrl-Z退出less命令, 然后在shell提示符下查看文件属性信息: [zhaoke@fedora5 ~]$ stat myfile File: `myfile' Size: 116549 Blocks: 240 IO Block: 4096 regular file Device: fd00h/64768d Inode: 492686 Links: 1 Access: (0664/-rw-rw-r–) Uid: ( 505/ zhaoke) Gid: ( 505/ zhaoke) Access: 2006-11-20 12:59:38.000000000 +0800 Modify: 2006-11-20 12:59:34.000000000 +0800 Change: 2006-11-20 12:59:34.000000000 +0800 没问题, 继续下面工作: [zhaoke@fedora5 ~]$ rm myfile [zhaoke@fedora5 ~]$ ls -l myfile ls: myfile: No such file or directory [zhaoke@fedora5 ~]$ stat myfile stat: cannot stat `myfile': No such file or directory myfile文件删除了。
这时候, 你不要终止仍在使用文件的进程。
因为一旦终止, 文件将很难恢复。
现在我们开始找回数据, 首先用lsof查看一下: [zhaoke@fedora5 ~]$ lsof | grep myfile less 9104 zhaoke 4r REG 253,0 116549 492686 /home/zhaoke/myfile (deleted) 第一个纵行是进程的名称(命令名), 第二纵行是进程号(PID), 第四纵行是文件描述符(r意思是普通文件), 现在你知道9104进程仍有打开文件, 文件描述符是4. 那我们开始从/proc里面拷贝出数据。
你可能会考虑使用cp -a, 但实际上没有作用, 你将拷贝的是一个指向被删除文件的符号链接: [zhaoke@fedora5 ~]$ ls -l /proc/9104/fd/4 lr-x—— 1 zhaoke zhaoke 64 Nov 20 13:00 /proc/9104/fd/4 -> /home/zhaoke/myfile (deleted) [zhaoke@fedora5 ~]$ cp -a /proc/9104/fd/4 myfile.wrong [zhaoke@fedora5 ~]$ ls -l myfile.wrong lrwxrwxrwx 1 zhaoke zhaoke 29 Nov 20 13:02 myfile.wrong -> /home/zhaoke/myfile (deleted) [zhaoke@fedora5 ~]$ file myfile.wrong myfile.wrong: broken symbolic link to `/home/zhaoke/myfile (deleted)' [zhaoke@fedora5 ~]$ file /proc/9104/fd/4 /proc/9104/fd/4: broken symbolic link to `/home/zhaoke/myfile (deleted)' 然后, 使用cp拷贝出数据: [zhaoke@fedora5 ~]$ cp /proc/9104/fd/4 myfile.saved 最后, 确认一下文件: [zhaoke@fedora5 ~]$ ls -l myfile.saved -rw-rw-r– 1 zhaoke zhaoke 116549 Nov 20 13:03 myfile.saved [zhaoke@fedora5 ~]$ man lsof | col -b > myfile.new [zhaoke@fedora5 ~]$ cmp myfile.saved myfile.new
linux删掉的文件怎么恢复
展开全部 为了避免文件被替换,首先要卸载需要回复文件的分区.或以只读的方式挂载,1. 添加硬盘,创建分区,关机后添加,在硬件那里新增一个dfisk分区1-6是分出一个测试区2. #fdisk /dev/sdb # 创建一个sdb1分区3. #partx -a /dev/sda #获取新分区表4. #mkdir /tmp/sdb #创建sdb文件夹5. #mkfs.ext4 /dev/sdb1 #格式化6. #mount /dev/sdb1 /tmpsdb #挂载新的分区7. #umount /tmp/sdb #卸载8. 解压工具extundelete 可以在http://sourceforge.net下载9. 解压#tar jxvf 包名#yum install gcc-c++#cd /mnt/packages#yum install *2fs*10. 编译安装#make –j#make install11. 创建空目录 mkdir test存放恢复的文件恢复的四个方法,前提卸载光驱了1. 通过inode结点恢复 #extundelete /dev/sdb1 - -restore-inode inode号2. 通过文件名恢复 #extundelete/dev/sdb1 - -restore-file 文件名3. 恢复某个目录 #extundelete/dev/sdb1 - -restore-directory 目录名4. 恢复所有文件 #extundelete/dev/sdb1 - -restore-all
转载请注明出处51数据库 » linux文件恢复软件