CentOS 备份文件清理指南
一、安全清理流程
二、按时间或数量自动清理
按时间删除旧备份(mtime)
find /mnt/back/ -name "*.tar.gz" -mtime +10 -delete
按数量保留最新 N 份
backup_dir="/path/to/backup"
max_files=7
ls -t "$backup_dir"/*.sql 2>/dev/null | tail -n +$((max_files+1)) | xargs -d '\n' rm -f
三、定时清理与备份一体化脚本
#!/usr/bin/env bash
set -Eeuo pipefail
BACKUP_DIR="/mnt/back"
KEEP_DAYS=7
LOG_FILE="/var/log/backup_cleanup.log"
TODAY=$(date +%Y%m%d)
BACKUP_FILE="$BACKUP_DIR/backup_${TODAY}.tar.gz"
exec >> "$LOG_FILE" 2>&1
echo "[$(date)] 开始备份与清理"
# 1) 备份(示例:打包 /var/www)
tar czf "$BACKUP_FILE" -C /var/www . || {
echo "备份失败,保留现有备份并退出"
exit 1
}
# 2) 清理超过 KEEP_DAYS 的旧备份
find "$BACKUP_DIR" -name "backup_*.tar.gz" -mtime +"$KEEP_DAYS" -delete
echo "[$(date)] 备份与清理完成"
# 每天 02:05 执行
5 2 * * * root /usr/local/bin/backup_and_clean.sh
四、清理系统垃圾释放更多空间(可选)
sudo yum clean all
sudo yum autoremove -y
# 如为 CentOS 8+/DNF
sudo dnf clean all
sudo journalctl --rotate
sudo journalctl --vacuum-time=1d
sudo rm -rf /tmp/*
sudo rm -rf /var/tmp/*
rm -rf ~/.local/share/Trash/files/*
sudo find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null
sudo yum install -y ncdu
ncdu /