[已弃用] Linux通过shell脚本+cron进行定期备份
创建备份脚本。以下是一个例子:
#!/bin/bash
# 备份脚本配置
SOURCE_DIR="/opt/mc_servers/1.21.1-Fabric/world" # 需要备份的源目录
BACKUP_DIR="/mnt/syn_nfs_mnt/backup/mc_servers/1211_Fabric" # 备份存放目录
BACKUP_PREFIX="backup_mcs_1211Fabric" # 备份文件前缀
LOG_FILE="/var/log/mcs_1211Fabric_backup.log" # 日志文件路径
MAX_BACKUPS=7 # 最大保留备份数量
# 创建日志函数
log() {
local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
echo "[${timestamp}] $1" | tee -a "$LOG_FILE"
}
# 检查源目录是否存在
if [ ! -d "$SOURCE_DIR" ]; then
log "错误: 源目录 $SOURCE_DIR 不存在!"
exit 1
fi
# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"
if [ $? -ne 0 ]; then
log "错误: 无法创建备份目录 $BACKUP_DIR!"
exit 1
fi
# 创建带时间戳的备份文件名
BACKUP_NAME="${BACKUP_PREFIX}$(date +%Y%m%d_%H%M%S).tar.gz"
BACKUP_PATH="${BACKUP_DIR}/${BACKUP_NAME}"
log "开始备份: 从 $SOURCE_DIR 到 $BACKUP_PATH"
# 执行备份
tar -czf "$BACKUP_PATH" -C "$(dirname "$SOURCE_DIR")" "$(basename "$SOURCE_DIR")"
if [ $? -eq 0 ]; then
log "备份成功完成: $BACKUP_PATH"
else
log "错误: 备份过程中出现错误!"
exit 1
fi
# 清理旧的备份
BACKUP_COUNT=$(ls -1 "${BACKUP_DIR}/${BACKUP_PREFIX}"*.tar.gz 2>/dev/null | wc -l)
if [ "$BACKUP_COUNT" -gt "$MAX_BACKUPS" ]; then
log "发现 $BACKUP_COUNT 个备份,超过最大保留数 $MAX_BACKUPS,开始清理..."
ls -t "${BACKUP_DIR}/${BACKUP_PREFIX}"*.tar.gz | tail -n +$(($MAX_BACKUPS + 1)) | while read -r old_backup; do
log "删除旧备份: $old_backup"
rm -f "$old_backup"
done
log "清理完成"
fi
log "备份任务完成"
exit 0创建logrotate,防止日志过大:
sudo nano /etc/logrotate.d/mcs_1211Fabric_backup
/var/log/mcs_1211Fabric_backup.log {
weekly
missingok
rotate 4
compress
delaycompress
notifempty
create 0640 root root
}创建cron计划任务:
sudo nano /etc/cron.d/mcs_1211Fabric_backup
30 1 * * * root /opt/mc_servers/backup_scripts/mcs_1211Fabric_backup.sh此任务将会在每天01:30执行。
许可协议:
CC BY 4.0