ZBLOG

Linux 如何恢复刚rm -rf 的文件

在 Linux 中,如果误执行了 rm -rf 删除文件或目录,恢复的难度取决于文件系统的类型、是否被覆盖以及是否有备份。以下是几种可能的恢复方法:


1. 检查是否有备份

  • 快照/备份工具
    如果有使用 rsynctarTimeShift(针对系统文件)等备份工具,可以直接从备份恢复。
  • 版本控制系统
    如果文件在 Git、SVN 等版本控制系统中,可通过 git checkoutsvn revert 恢复。

2. 使用文件恢复工具

(1) ext4/xfs/btrfs 文件系统(需立即停止写入操作)

  • extundelete(仅适用于 ext3/ext4):
    安装并尝试恢复: “`bash sudo apt-get install extundelete # Debian/Ubuntu sudo yum install extundelete # CentOS/RHEL(需EPEL仓库)

# 扫描分区(例如 /dev/sda1) sudo extundelete /dev/sda1 –restore-all

# 恢复的文件会保存在当前目录的 RECOVERED_FILES/ 下。


- **testdisk**(支持多种文件系统):  
  安装后按交互式向导操作:
  ```bash
  sudo apt-get install testdisk      # Debian/Ubuntu
  sudo yum install testdisk         # CentOS/RHEL
  
  sudo testdisk
  选择分区 → Advanced → Undelete → [选择要恢复的文件]

(2) NTFS/FAT/exFAT(如外接磁盘)

  • photorec(testdisk套件的一部分):
    适用于从损坏的分区中恢复文件:
sudo photorec

3. debugfs(仅限ext2/ext3/ext4,需知道文件名)

如果记得被删文件的路径和名称:

sudo debugfs /dev/sda1              # sda1是分区名
debugfs> lsdel                      # 列出已删除的inode
debugfs> dump <inode_num> /tmp/recovered_file

4. Systemd临时文件自动清理前的抢救

如果文件位于 /tmp,且系统使用 systemd-tmpfiles-clean.timer,可能在清理前仍有残留:

lsof +L1 | grep deleted             #查找被删除但未释放的文件句柄
cp /proc/<PID>/fd/<FD_NUM> ~/recovered_file   #通过进程句柄恢复

5.专业数据恢复服务

如果数据极其重要且上述方法无效:

  • 联系专业机构:如硬盘厂商或数据恢复公司。
  • 避免二次破坏:立即卸载分区或只读挂载:
sudo umount /dev/sda1               #卸载分区防止覆盖
sudo mount -o ro,remount /          #以只读方式重新挂载根分区(紧急情况)

⚠️ 关键注意事项

  1. 立即停止写入:任何磁盘操作都可能覆盖被删文件的区块。
  2. 勿直接恢复到原磁盘:将恢复的文件保存到其他磁盘或U盘。
  3. 日志监控:未来可使用 auditd 记录 rm命令操作:

”`bash sudo auditctl -w /path/to/dir -p wa -k delete_audit


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23450

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?