定时保留最新的2个文件
# 编辑系统crontab文件
sudo vim /etc/crontab
# 每天凌晨3点执行清理脚本
0 3 * * * root /path/to/cleanup_confluence_data.sh
cleanup_confluence_data.sh
#!/bin/bash
# 配置变量
BACKUP_DIR="/mnt/data/rsyncbackup/47.95.238.93/data/confluence-data"
KEEP_NUM=2
DRY_RUN=false # 设置为true进行测试运行
# 日志文件
LOG_FILE="/var/log/cleanup_confluence.log"
# 记录执行时间
echo "$(date): Starting cleanup process (Dry run: $DRY_RUN)" >> "$LOG_FILE"
# 检查目录是否存在
if [ ! -d "$BACKUP_DIR" ]; then
echo "$(date): Error - Directory $BACKUP_DIR does not exist" >> "$LOG_FILE"
exit 1
fi
# 获取文件总数
TOTAL_FILES=$(ls -1 "$BACKUP_DIR" | wc -l)
echo "$(date): Total files in directory: $TOTAL_FILES" >> "$LOG_FILE"
# 如果文件数少于或等于要保留的数量,则不删除
if [ "$TOTAL_FILES" -le "$KEEP_NUM" ]; then
echo "$(date): No cleanup needed. Total files ($TOTAL_FILES) <= Keep count ($KEEP_NUM)" >> "$LOG_FILE"
exit 0
fi
# 获取需要删除的文件列表(除了最新的KEEP_NUM个)
FILES_TO_DELETE=$(ls -t "$BACKUP_DIR" | tail -n +$((KEEP_NUM + 1)))
echo "$(date): Files to be deleted:" >> "$LOG_FILE"
echo "$FILES_TO_DELETE" >> "$LOG_FILE"
# 执行删除操作
if [ "$DRY_RUN" = false ]; then
cd "$BACKUP_DIR"
for file in $FILES_TO_DELETE; do
if [ -e "$file" ]; then
rm -rf "$file"
echo "$(date): Deleted $file" >> "$LOG_FILE"
else
echo "$(date): Warning - File $file not found" >> "$LOG_FILE"
fi
done
echo "$(date): Cleanup completed. Kept the latest $KEEP_NUM files." >> "$LOG_FILE"
else
echo "$(date): Dry run mode - no files actually deleted" >> "$LOG_FILE"
fi
echo "$(date): Cleanup process finished" >> "$LOG_FILE"
echo "----------------------------------------" >> "$LOG_FILE"
欢迎来撩 : 汇总all