# 使用 SCP 将备份文件上传到远程服务器 # 重试机制:如果第一次上传失败,尝试重试最多3次 RETRY_COUNT=0 MAX_RETRIES=3 while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do scp -P $REMOTE_PORT$LOCAL_BACKUP_DIR/$ARCHIVE_NAME${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/ if [ $? -eq 0 ]; then echo"[$(date)] 备份文件成功上传到远程服务器。" | tee -a $LOG_FILE break else echo"[$(date)] 第$((RETRY_COUNT+1))次尝试上传失败,正在重试..." | tee -a $LOG_FILE RETRY_COUNT=$((RETRY_COUNT+1)) if [ $RETRY_COUNT -eq $MAX_RETRIES ]; then echo"[$(date)] 上传失败次数达到最大重试次数,备份上传失败。" | tee -a $LOG_FILE exit 1 fi fi done
# 删除本地过期的备份文件 echo"[$(date)] 正在删除超过 $LOCAL_RETENTION_DAYS 天的本地备份文件..." | tee -a $LOG_FILE find $LOCAL_BACKUP_DIR -type f -mtime +$LOCAL_RETENTION_DAYS -delete
# 删除远程过期的备份文件 echo"[$(date)] 正在删除远程服务器上超过 $REMOTE_RETENTION_DAYS 天的备份文件..." | tee -a $LOG_FILE ssh -p $REMOTE_PORT${REMOTE_USER}@${REMOTE_HOST}"find ${REMOTE_DIR} -type f -mtime +${REMOTE_RETENTION_DAYS} -delete"
# 记录备份完成时间 echo"[$(date)] MySQL 数据库备份完成。" | tee -a $LOG_FILE