Linux 利用 /proc 目录恢复误删除的文件

在 Linux 系统中删除文件时,无论文件是否在使用中,甚至是还在写入,都可以被 rm 删除。不过,rm 删除文件时并非是被真正地擦除,特别是当文件在被进程打开时,是可以恢复的。

Linux 的每个文件对应一个 inode 号,它有两个计数 i_count(内存引用计数,当前使用这个文件的进程数量)和 i_nlink (磁盘引用计数,硬链接数量)。rm 操作时,把 i_nlink 数量减 1,但只要 i_nlink 和 i_count 任意一个不为 0 ,该文件并没有被系统删除,所占用的空间不会被回收。

在 Linux 系统中,如果删除了一个较大的文件。虽然在文件系统中找不到该文件,但是用 df 命令查看时,发现磁盘空间并没有因为文件的删除而增大。很有可能是因为某个进程正在使用该文件,执行删除命令不会马上删除该文件,占用的磁盘空间也不会被立即释放。

注意:利用 /proc 目录并不能恢复所有被删除的文件。只有删除某个进程正在使用的文件才能够恢复。

下面模拟删除文件的恢复过程。删除 /home 目录下的文件。

[root@localhost home]# pwd
/home
[root@localhost home]# echo 'abcdefg' > a.txt
[root@localhost home]# ll
总用量 4
-rw-r--r--. 1 root root 8 11月 12 12:41 a.txt# 在另一个窗口使用 vi 编辑该文件,然后在当前窗口删除 a.txt 文件
[root@localhost home]# rm -rf a.txt
[root@localhost home]# ll
总用量 0

恢复被删除的文件步骤如下:

步骤一:使用 lsof 命令查看被删除的文件被哪个进程使用

[root@localhost home]# lsof |grep 'a.txt'
vi        27680          root    4u      REG              253,0     12288   50741027 /home/.a.txt.swp

步骤二:进入【/proc/27680/fd】目录,找到该文件的文件句柄。

/proc/N/fd:包含进程相关的所有的文件描述符。

[root@localhost home]# cd /proc/27680/fd
[root@localhost fd]# pwd
/proc/27680/fd[root@localhost fd]# ll
总用量 0
lrwx------. 1 root root 64 11月 12 12:43 0 -> /dev/pts/0
lrwx------. 1 root root 64 11月 12 12:43 1 -> /dev/pts/0
lrwx------. 1 root root 64 11月 12 12:43 2 -> /dev/pts/0
lrwx------. 1 root root 64 11月 12 12:43 4 -> /home/.a.txt.swp

步骤三:直接复制文件句柄,并修改文件权限即可。

[root@localhost fd]# ll
总用量 0
lrwx------. 1 root root 64 11月 12 12:43 0 -> /dev/pts/0
lrwx------. 1 root root 64 11月 12 12:43 1 -> /dev/pts/0
lrwx------. 1 root root 64 11月 12 12:43 2 -> /dev/pts/0
lrwx------. 1 root root 64 11月 12 12:43 4 -> /home/.a.txt.swp[root@localhost fd]# cp /home/.a.txt.swp /home/a.txt
[root@localhost fd]# ll /home/
总用量 12
-rw-r--r--. 1 root root 12288 11月 12 12:48 a.txt

Linux 利用 /proc 目录恢复误删除的文件相关推荐

  1. Linux中/proc目录下文件详解

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  2. Linux中/proc目录下文件详解(二)

    Linux中/proc目录下文件详解(二) /proc/mdstat文件 这个文件包含了由md设备驱动程序控制的RAID设备信息. 示例: [root@localhost ~]# cat /proc/ ...

  3. Linux 下固态硬盘恢复误删除文件

    首发地址:学习日记 Linux 下固态硬盘恢复误删除文件 – 学习日记 上次分享了一则Linux下恢复误删除文件的视频,有朋友在视频下方询问是否机械硬盘,由此引出今天这则Linux下固态硬盘恢复误删除 ...

  4. Linux中/proc目录下文件详解 /proc/devices文件 /proc/modules文件

    http://blog.chinaunix.net/uid-10449864-id-2956854.html 原来对linux系统中的/proc目录不是很了解,只知道可以查看cpu,内存等相关的信息, ...

  5. linux在当前目录下创建pic目录,Linux中/proc目录下文件详解

    文章转自: Linux中/proc目录下文件详解(一) ------------------------------------------------------------------------ ...

  6. Linux中/proc目录下文件详解(zt)

    Linux中/proc目录下文件详解(一) 声明:可以自由转载本文,但请务必保留本文的完整性. 作者:张子坚 email:zhangzijian@163.com 说明:本文所涉及示例均在fedora ...

  7. 【学神-RHEL7】1-4-1-Linux文件管理和恢复误删除的文件

      Linux基本文件管理 本节所讲内容: Linux系统目录结构 相对/绝对路径 创建/复制/删除文件 rm -rf / 意外事故 查看文件内容 xfs文件系统的备份和恢复 extundelete恢 ...

  8. linux利用patch和diff命令制作文件补丁

    linux利用patch和diff命令制作文件补丁 因为在 u-boot 移植过程中,有几处通用文件要修改,如果每次都要手动修改就太麻烦了.制作补丁可以解决这个问题. 学习资料的收集比较简单,方法一类 ...

  9. linux 复制指定目录下的全部文件到另一个目录中,linux cp 文件夹

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. linux复制指定目录下的全部文件到另一个目录中 复制指定目录下的全部文件到另一个目录中 文件及目录 ...

最新文章

  1. Sciences:Knight组发表尸体降解过程中的微生物组
  2. VMware Virtual SAN存储设计规划
  3. 005_html文档类型
  4. 求任意大小矩阵的转置矩阵
  5. (53)FPGA条件选择(casez)
  6. java实例化对象数组_java对象实例化
  7. android学习资料整理-----高级篇
  8. 海思视频码率参数解析
  9. ckeditor使用技巧总结
  10. 百度找不到服务器是怎么回事,百度搜索不能用了
  11. 如何注册Twitter,来学
  12. 浅谈Go 语言之 go-app
  13. 时间序列matlab的实现
  14. JavaApplet编程技巧
  15. GEA 1.7 工具及资产管道
  16. 操作系统---linux
  17. 量化交易策略 - 优化均仓策略
  18. 电信机顶盒ty1208-z刷linux(armbian)
  19. python爬虫 携程 机票 sign transactionID
  20. cakephp mysql_攻克CakePHP系列一 连接MySQL数据库

热门文章

  1. 单反拍摄技巧:适当使用手动调焦
  2. 免费领取网易云音乐黑胶 VIP 月卡,还有网易邮箱 / 严选 Pro / 有道云笔记福利...
  3. Gadmin企业级开发平台V5.0.8版本发布
  4. C++———STL(SGI版本)
  5. 从零开始做一个SLG游戏(四):UI系统之主界面搭建
  6. HTML5七夕情人节表白网页制作【飘落蒲公英动画超酷炫的HTML5页面】HTML+CSS+JavaScript
  7. 2021-2027全球与中国抗衰类家用美容仪器市场现状及未来发展趋势
  8. 有了微信微公交 在广州乘车不用怕坐过头了
  9. 图像相似性评价指标(SSIM、MSE、PSNR)简单介绍及计算方法
  10. WLAN—天线技术原理各种器件介绍