CentOS系统恢复误删文件及回收站机制实现方法
CentOS作为Linux发行版,默认没有类似Windows的图形化回收站,但可通过trash-cli工具模拟回收站功能,或通过自定义脚本实现文件移动到回收站的逻辑,避免直接永久删除。
1. 安装trash-cli
通过yum包管理器安装,支持将文件移动到回收站而非直接删除:
sudo yum install trash-cli -y
2. 基本操作命令
trash-put替代rm,例如:trash-put /path/to/file.txt # 将指定文件移动到回收站
trash-list # 显示回收站中所有文件及删除时间
trash-restore # 按提示选择要恢复的文件(支持按文件名过滤)
trash-restore -r # 递归恢复回收站中所有文件
trash-empty # 清空回收站(谨慎使用,永久删除)
3. 自定义回收站目录
默认回收站目录为~/.local/share/Trash/files/,可通过修改~/.bashrc设置自定义路径(如/data/Trash):
echo 'export TRASH_DIR="/data/Trash"' >> ~/.bashrc
source ~/.bashrc
然后在trash-put命令中通过--trash-dir指定目录:
trash-put --trash-dir=/data/Trash /path/to/file.txt
若未提前配置回收站,可使用extundelete工具恢复ext4/ext3文件系统中的误删文件(需卸载目标分区以避免数据覆盖)。
1. 安装extundelete
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
2. 恢复文件步骤
/dev/sdb1分区,需先卸载(若为系统分区,需重启到单用户模式):sudo umount /dev/sdb1
test.txt):/usr/local/extundelete/bin/extundelete /dev/sdb1 --restore-file /path/to/test.txt
/usr/local/extundelete/bin/extundelete /dev/sdb1 --restore-all
RECOVERED_FILES文件夹中。XFS文件系统需使用xfsdump(备份)和xfsrestore(恢复)工具,需提前备份才能恢复(无直接恢复已删除文件的工具)。
1. 安装xfsdump
sudo yum install xfsdump -y
2. 备份分区(预防误删)
sudo xfsdump -f /data/xfsbackup.img /dev/sdc1 # 备份/dev/sdc1分区到xfsbackup.img
3. 恢复文件
sudo xfsrestore -f /data/xfsbackup.img /data/recovery # 恢复到指定目录
恢复后检查/data/recovery目录中的文件完整性。
若上述工具无法恢复,可尝试第三方软件(如TestDisk、PhotoRec),支持多种文件系统:
sudo yum install testdisk -y
sudo testdisk,选择目标磁盘;rsync、xfsdump或云存储定期备份重要数据,是最有效的防丢失措施。