CentOS系统数据恢复方法(针对回收站或误删除场景)
CentOS作为Linux系统,本身没有传统Windows的“回收站”功能,文件删除后通常进入用户主目录下的.local/share/Trash/files(文件)和.local/share/Trash/info(元数据)目录(图形界面删除的文件会存放在这里);若使用rm命令强制删除,文件会直接从文件系统中移除,需通过工具恢复。以下是具体恢复方案:
若文件是通过图形界面(如GNOME、KDE)删除,且未清空回收站,可直接通过文件管理器恢复:
若回收站文件丢失或需命令行操作,可通过trash-cli工具管理:
sudo yum install trash-cli;trash-list(显示回收站内所有文件及删除时间);trash-restore,按提示输入文件编号(如1对应第一个文件);trash-restore -r(递归恢复回收站内所有内容)。若回收站目录(.local/share/Trash/files)中仍存在文件,可直接移动至原始位置:
cd ~/.local/share/Trash/files # 进入回收站文件目录
find . -name "目标文件名" # 查找需恢复的文件(如example.txt)
mv ./目标文件名 /原始路径/ # 移动文件至原始位置(如/home/user/Documents/)
若文件已通过rm命令强制删除,或回收站被清空,需使用专业数据恢复工具,成功率取决于文件是否被新数据覆盖:
extundelete是针对ext文件系统的恢复工具,需提前安装:
sudo yum install e2fsprogs-devel e2fsprogs e2fsprogs-libs -y # 安装依赖
wget http://nchc.dl.sourceforge.net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4.tar.bz2
tar -jxvf extundelete-0.2.4.tar.bz2
cd extundelete-0.2.4
./configure --prefix=/usr/local/extundelete
make && sudo make install
sudo umount /dev/sdXN(sdXN为目标分区,如/dev/sda1);sudo /usr/local/extundelete/bin/extundelete /dev/sdXN --inode 2(--inode 2扫描分区根目录,查看已删除文件列表);sudo /usr/local/extundelete/bin/extundelete /dev/sdXN --restore-file 路径/文件名(如--restore-file home/user/example.txt);sudo /usr/local/extundelete/bin/extundelete /dev/sdXN --restore-all(恢复分区内所有已删除文件);RECOVERED_FILES文件夹中。TestDisk用于恢复分区结构及文件,PhotoRec是其姊妹工具,专注于文件恢复(支持照片、文档、视频等多种类型):
sudo yum install testdisk -y(同时安装PhotoRec);sudo testdisk;/dev/sda);Intel对应MBR,EFI GPT对应GPT);Analyse→Quick Search(快速扫描)或Deep Search(深度扫描),查找已删除文件;c键复制到安全目录(如/home/user/recovered/)。extundelete(ext文件系统)或TestDisk(多种文件系统),而非第三方商业软件;rsync、xfsdump或云存储)是防止数据丢失的关键;extundelete时,需卸载目标分区(若为系统分区,可重启至单用户模式或Live CD操作)。