您的位置 首页 shell脚本

定时保留最新的2个文件

定时保留最新的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

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章