CentOS系统回收站备份方法
CentOS系统本身没有类似Windows的传统回收站,但通过用户目录下的.local/share/Trash目录实现类似功能:删除的文件默认存储在~/.local/share/Trash/files/(文件)和~/.local/share/Trash/info/(删除信息)中,便于后续恢复。
~/.local/share/Trash/files/(如/home/username/.local/share/Trash/files/)。/root/.local/share/Trash/files/。通过tar命令将回收站目录压缩为归档文件,便于存储和传输:
# 进入回收站上级目录(以root用户为例)
cd /root/.local/share/Trash/
# 打包files目录(包含所有删除的文件)
sudo tar -czvf trash_backup_$(date +%Y%m%d).tar.gz files/
-c:创建新的归档文件;-z:使用gzip压缩(减小文件体积);-v:显示备份过程;-f:指定归档文件名(包含当前日期,便于区分)。rsync适合增量备份(仅同步变化的文件),节省时间和存储空间:
# 创建备份目标目录(如/data/backup/trash)
sudo mkdir -p /data/backup/trash
# 同步回收站files目录到目标目录
sudo rsync -avz ~/.local/share/Trash/files/ /data/backup/trash/
-a:归档模式(保留文件属性);-v:显示同步过程;-z:压缩传输(减少网络带宽占用)。通过crontab设置定期自动备份,避免手动操作遗漏:
# 编辑当前用户的crontab文件
crontab -e
添加以下内容(每天凌晨2点备份普通用户的回收站):
0 2 * * * tar -czvf /data/backup/trash_$(date +\%Y\%m\%d).tar.gz ~/.local/share/Trash/files/ >/dev/null 2>&1
0 2 * * *:每天凌晨2点执行;>/dev/null 2>&1:屏蔽命令输出(避免邮件通知)。通过自定义脚本模拟Windows回收站的“移动-恢复”流程,提升易用性:
# 创建全局回收站目录(如/data/trash)
sudo mkdir -p /data/trash
sudo chmod 700 /data/trash
vim /bin/trash.sh
添加以下内容:
#!/bin/bash
TRASH_DIR="/data/trash"
if [ ! -d "$TRASH_DIR" ]; then
mkdir -p "$TRASH_DIR"
fi
for FILE in "$@"; do
if [ -e "$FILE" ]; then
TIMESTAMP=$(date +%Y%m%d%H%M%S)
BASENAME=$(basename "$FILE")
NEW_NAME="${BASENAME}_$TIMESTAMP"
mv "$FILE" "$TRASH_DIR/$NEW_NAME"
else
echo "'$FILE' does not exist!"
fi
done
赋予执行权限:
sudo chmod +x /bin/trash.sh
编辑~/.bashrc文件,添加别名:
alias rm='/bin/trash.sh'
使别名生效:
source ~/.bashrc
此后,使用rm命令将自动将文件移动到/data/trash目录,而非直接删除。
sudo(尤其是root用户的回收站),避免权限不足导致备份失败;rsync、tar或专业备份工具(如duplicity)进行额外备份。