插件窝 干货文章 linux怎么恢复rm误删的数据

linux怎么恢复rm误删的数据

恢复 使用 scalpel sudo 506    来源:    2025-04-07

Linux下恢复误删文件的方法

当你在Linux系统中不小心使用rm命令删除了重要文件时,有几种方法可以尝试恢复数据。以下是详细的恢复方案:

1. 立即停止写入操作

重要提示:在发现文件被误删后,立即停止对该磁盘的任何写入操作,因为新数据可能会覆盖被删除文件占用的空间。

2. 使用文件恢复工具

2.1 使用extundelete(适用于ext3/ext4文件系统)

# 安装extundelete
sudo apt-get install extundelete  # Ubuntu/Debian
sudo yum install extundelete     # CentOS/RHEL

# 查看可恢复文件
sudo extundelete /dev/sdX --restore-all

# 恢复特定文件
sudo extundelete /dev/sdX --restore-file /path/to/deleted/file

# 恢复特定目录
sudo extundelete /dev/sdX --restore-directory /path/to/deleted/dir

2.2 使用testdisk/photorec

# 安装testdisk
sudo apt-get install testdisk  # Ubuntu/Debian
sudo yum install testdisk     # CentOS/RHEL

# 运行photorec
sudo photorec

# 按照向导选择磁盘和恢复选项

2.3 使用scalpel(文件雕刻工具)

# 安装scalpel
sudo apt-get install scalpel  # Ubuntu/Debian
sudo yum install scalpel     # CentOS/RHEL

# 配置scalpel
sudo cp /etc/scalpel/scalpel.conf /etc/scalpel/scalpel.conf.orig
sudo nano /etc/scalpel/scalpel.conf  # 取消注释要恢复的文件类型

# 运行scalpel
sudo scalpel /dev/sdX -o /recovery/output/directory

3. 从备份恢复

如果你有定期备份的习惯,可以从备份中恢复:

# 使用rsync备份恢复
rsync -avz /backup/location/ /original/location/

# 使用tar备份恢复
tar -xzvf backup.tar.gz -C /original/location/

4. 使用LVM快照恢复(如果使用LVM)

# 列出快照
sudo lvdisplay

# 恢复快照
sudo lvconvert --merge /dev/vgname/snapshotname

5. 专业数据恢复服务

如果数据极其重要且上述方法无效,可以考虑专业数据恢复服务。

预防措施

为避免未来发生类似问题:

  1. 使用alias rm='rm -i'让rm命令询问确认
  2. 使用trash-cli代替rm(将文件移至回收站)
  3. 设置定期备份策略
  4. 对重要目录使用版本控制系统(如git)
  5. 考虑使用mv到临时目录代替直接删除

记住,数据恢复的成功率取决于删除后磁盘的使用情况,越早尝试恢复,成功率越高。