前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【CVM】Linux 误删除文件怎么恢复

【CVM】Linux 误删除文件怎么恢复

原创
作者头像
Hanzo
修改2020-12-28 11:49:57
9.1K0
修改2020-12-28 11:49:57
举报
文章被收录于专栏:Hanzo运维之路Hanzo运维之路

Linux 误删除文件一般场景如下:

场景一:删除文件时,文件正在被其他进程调用

场景二:删除文件时,文件没有被其他进程调用

场景一:删除文件时,文件正在被其他进程调用

技术原理

对于进程正在使用文件的场景,数据可以恢复是由于Linux系统下文件包含两个部分:inode 和 block ,其中 inode 中每个文件都有 2 个计数器:i_count 和 i_nlink 。只有当 i_count 和 i_nlink 均为 0 时,文件才算被删除,但被其他进程调用的文件,i_count 将不为 0。

i_count :当一个文件被一个进程引用时,其数值会增加 1,主要是用来记录文件被进程引用的次数

i_nlink :记录硬链接个数

恢复示例

1.创建测试文件 Delete.txt ,并使用 tail -f 程序持续调用此文件;

使用 tail -f 确保 i_count 不为 0
使用 tail -f 确保 i_count 不为 0

2.在新终端中,使用 rm -rf 命令删除该文件;

删除 Delete.txt 文件
删除 Delete.txt 文件

3.lsof 查看被删除文件 Delete.txt 的被调用情况;

Delete.txt 被 PID 为 21205 的 tail 进程调用
Delete.txt 被 PID 为 21205 的 tail 进程调用

4.在 /proc/21205/fd 目录下查找 Delete.txt 文件(fd 目录下可查看当前进程持有的文件句柄);

找到 3 对应着被删除的 Delete.txt
找到 3 对应着被删除的 Delete.txt

5.使用 cp 命令直接恢复到对应目录,核实文件完整性;

恢复为 Delete.restore
恢复为 Delete.restore

场景二:删除文件时,文件没有被其他进程调用

技术原理

没有被进程调用且无其他硬链接的文件在被删除后,i_count 和 i_nlink 将为 0。但文件本身依赖于两部分【inode & block】,rm 操作本身删除的仅是 inode 连接信息,不会删除 block ,而真正的数据恰恰是存在于 block 中的,故可当前场景下可通过 block 找回数据【需要借助 extundelete】。

inode :用于存放文件的元数据,并通过索引信息关联到磁盘中具体 block 单元

block :数据块,用来实际存放数据的单元

风险提醒

如果有进程在不断往磁盘写入数据,此时如果将对应的数据分配到之前被误删除的 block 上时,block 上原始的数据将被覆盖,这个时候数据将无法再次找回,故当前场景下找回时,请务必在发生数据误删除时,停止一切写入操作【①umount磁盘;②readonly挂载磁盘】

恢复示例

1.先 yum 安装 extundelete;

extundelete 为 ext 文件系统数据恢复工具
extundelete 为 ext 文件系统数据恢复工具

2.数据盘 vdb 初始化后挂载到 mnt ,在 mnt 下创建文件 Delete.txt 和 目录 Delete.dir;

挂盘,创建文件和目录
挂盘,创建文件和目录

3.rm -rf * 删除 mnt 目录下所有文件和目录;

删除文件和目录
删除文件和目录

4.卸载数据盘 vdb ,防止数据后续的数据写入覆盖 block 中误删除的数据;

卸载 vdb
卸载 vdb

5. extundelete 命令核实此磁盘 block 中被删除的文件信息【extundelete /dev/vdb --inode 2】;

block 中查找被删除的文件
block 中查找被删除的文件

6.extundelete 命令恢复文件和目录;

extundelete /dev/vdb --restore-all 尝试恢复所有,执行完成后发现产生新目录(RECOVERED_FILES):

尝试找回数据
尝试找回数据

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景一:删除文件时,文件正在被其他进程调用
    • 技术原理
      • 恢复示例
      • 场景二:删除文件时,文件没有被其他进程调用
        • 技术原理
          • 风险提醒
            • 恢复示例
            相关产品与服务
            云服务器
            云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档