关于linux:误删文件怎么办莫慌这里有解决方案

46次阅读

共计 2451 个字符,预计需要花费 7 分钟才能阅读完成。

前言

无论在哪个零碎中,删除文件都是必须审慎的操作。因为如果不小心删除了重要文件,就会导致集体或公司呈现重大的损失。相似于 windows 零碎误删了文件,能够应用一些软件进行复原操作。Linux 也是有几款软件能够做到误删复原的。

注意事项:尽管有软件能够对误删的数据进行复原,然而完全恢复数据的概率并不是百分百的。

因而,应用 rm 命令删除文件的时候,肯定要小心;重要的数据肯定要有备份;并且复原删除的数据前,删除文件的目录内不能往进寄存新货色,否则笼罩掉的信息无奈找回。

上面介绍的就是对 Linux 中误删文件的复原操作。

1、lsof

原理:这个命令实际上并不能间接用来复原文件,不过它能够列出被各种过程关上的文件信息。

配合其余命令,从 /proc 目录下的信息中复原“文件已删除,但过程仍放弃关上该文件的状态”的文件。

/proc 目录是挂载的是在内存中所映射的一块区域,当咱们对这些文件进行读取和写入时,实际上是在从内存中获取相干信息。

因而,当咱们对文件进行读取或写入时 (即有过程正应用文件时),哪怕硬盘中的该文件已删除,还能够从内存中的信息复原文件。

留神:

  • 必须以 root 用户的权限运行,因为 lsof 须要拜访外围内存和各种文件。
  • 只能复原“文件已删除,但过程仍放弃关上该文件的状态”的文件。
  • 如果误删了目录,目录中的其余文件未被过程关上,没有进行应用的文件将无奈应用此办法复原。

lsof 输入信息的意义:

COMMAND       #过程的 PID(过程标识符)
USER          #过程所有者
FD            #用来辨认该文件 (文件描述符)
DEVICE        #指定磁盘的名称
SIZE          #文件的大小
NODE          #索引节点 (文件在磁盘上的标识)
NAME          #关上文件的确切名称 

最罕用参数:

 `
 -c       #显示某过程当初关上的文件
 -p       #显示哪些文件被某 pid 过程关上
 -g       #显示归属某 gid 的过程状况
 -d       #显示目录下被过程开启的文件
 -d       #显示应用 fd 为 4 的过程
 -i:80    #显示关上 80 端口的过程 

复原文件操作

环境:在 /mnt 下有一些文件,其中一个文件 train.less 正在被查看,而后另一个终端将其删除

【1】lsof 查看

查看正在应用删除文件的过程号

lsof /mnt

【2】复原

切换到 /proc 下,删除文件对应的过程的 pid 下的文件描述符中的目录中;将对应的内容重定向或 cp 到其余文件中。

重点关注:PID 与 FD

cd /proc/31284/fd/
cat 4 > /mnt/ferris_train.less

2、extundelete

原理:应用存储在分区日志中的信息,尝试复原已从 ext3 或 ext4 的分区中删除的文件

长处:相比于 ext3grep 只能复原 ext3 文件系统的文件,其适用范围更广,复原速度更快

extundelete 官网地址 (官网文档):http://extundelete.sourceforg…

extundelete 下载地址:http://downloads.sourceforge…. (最新版本的 extundelete 是 0.2.4,于 2013 年 1 月公布)

留神:

  • 在数据删除之后,要卸载被删除数据所在的磁盘或是分区
  • 如果是零碎根分区受到误删除,就要进入单用户模式, 将根分区以只读的形式挂载, 尽可能防止数据被笼罩
  • 数据被笼罩后无奈找回
  • 复原仍有肯定的机率失败,平时应答重要数据作备份,小心应用 rm

装置

1、依赖装置

#centos 安装操作
yum install e2fsprogs-devel   e2fsprogs* gcc*
#ubuntu 安装操作
apt-get install build-essential  e2fslibs-dev  e2fslibs-dev

2、编译装置

wget http://downloads.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar xf  extundelete-0.2.4.tar.bz2
cd  extundelete-0.2.4
./configure
make
make install

cd /root/extundelete-0.2.4/src

extundelete -v

  • 执行 make 命令会在 src 目录下生成 extundelete 可执行文件,可在此间接执行复原命令。
  • 执行 make install 会将程序安装在 /usr/local/bin/ 下

复原文件操作

执行 extundelete 命令的当前目录必须是可写的。

1、查看要复原文件的分区的文件系统

df  -Th

2、对要复原文件的分区解除挂载

umount /mnt

3、查看能够复原的数据

指定误删文件的分区进行查找, 最初一列标记为 Deleted 的文件,即为删除了的文件。

extundelete /dev/vdb1 --inode 2(根分区的 inode 值是 2)

4、复原单个目录

指定要复原的目录名,如果是空目录,则不会复原。

extundelete /dev/vdb1 --restore-directory  ferris

当执行复原文件的命令后,会在执行命令的以后的目录下生成 RECOVERED_FILES 目录,复原的文件都会放入此目录中。如未生成目录,即为失败。

5、复原单个文件

指定要复原的文件名,如果几 k 大小的小文件,有很大几率复原失败。

extundelete /dev/vdb1 --restore-file openssh-7.7p1.tar.gz

6、复原全副删除的文件

无需指定文件名或目录名,复原全副删除的数据。

extundelete /dev/vdb1 --restore-all

作者:漠效
_原文:https://blog.csdn.net/GX_1_11…

正文完
 0