有朋友不小心将自己移动硬盘上的文件通过执行linux系统的rm命令误删除了。找到我,让我帮他恢复。有同样情况的朋友,如果硬盘文件系统是ntfs,也可以参考如下方法。
查看接系统的分区信息,确定要恢复文件的分区 。df -hT
如下图所示,要恢复文件的是/dev/sdb1,即第二块硬盘的第一分区。
使用ntfsundelete命令扫描sdb1分区上的文件信息。sudo ntfsundelete /dev/sdb1 -f
说明:-f参数使用后将会重写一些敏感的默认值,例如不要覆盖当前已经存在的文件。如下图所示,注意两个字段,其一,size字段如果是0表示文件不能恢复,如果不是0就可以恢复。其二,inode字段,恢复文件的时候需要指明inode号。
取消要恢复分区或者硬盘的挂载,为文件恢复做好准备。如下图所示,Seagate开头的挂载即是要恢复的硬盘。
取消挂载sudo umount /media/md5/Seagate\ Expansion\ Drive/
说明:改成自己要取消挂载的分区即可。如下图所示,取消挂载成功。
确定要恢复的文件后,得到其inode号,然后就可以进行恢复了。要恢复多个文件,可以使用","进行分隔。
执行如下命令,恢复inode号为38和40的两个文件
sudo ntfsundelete /dev/sdb1 -u -i 38,40 -d /home/md5/
说明:-u参数选择undelete模式,正是因为使用undelete模式所以要先进行第4步的操作。 -i是指明要恢复文件的inode号,-d是恢复文件所保存的目录。
如果要恢复多个inode号连续的文件可以使用“-”。
sudo ntfsundelete /dev/sdb1 -u -i 59-67,69-72,74,76,78,79 -d /home/md5/t
说明:多个连续的文件可以使用-,比如上面命令的59-67,即恢复59、60、61……67共8个文件,如果还有单个文件,还可以使用第5步所说的“,”进行分隔。
恢复完成后,因为使用的root权限进行恢复的,所以还需要修改一下文件所有者。
sudo chown md5 2.doc;chgrp md5 2.doc
说明:通过chown和chgrp来改变文件所有者和文件所属用户组为md5,根据个人情况自行设定即可。