本文目录导读:

- 方案1:Linux rsync + cron (最常用)
- 方案2:Windows PowerShell + 任务计划程序
- 方案3:使用 Systemd Timer (Linux现代方法)
- 方案4:使用高级备份脚本(带版本控制)
- 使用建议
方案1:Linux rsync + cron (最常用)
同步脚本 (backup.sh)
#!/bin/bash
# 配置
SOURCE_DIR="/path/to/source" # 源文件夹
BACKUP_DIR="/path/to/backup" # 备份盘路径
LOG_FILE="/var/log/backup.log"
DATE=$(date "+%Y-%m-%d %H:%M:%S")
# 创建日志记录函数
log() {
echo "[$DATE] $1" >> "$LOG_FILE"
}
# 检查备份盘是否挂载
if [ ! -d "$BACKUP_DIR" ]; then
log "错误: 备份目录 $BACKUP_DIR 不存在"
exit 1
fi
# 执行同步
log "开始同步..."
rsync -avz --delete "$SOURCE_DIR/" "$BACKUP_DIR/" >> "$LOG_FILE" 2>&1
# 检查同步结果
if [ $? -eq 0 ]; then
log "同步完成"
else
log "同步失败"
fi
设置cron定时任务
# 编辑crontab crontab -e # 添加以下行(每2小时同步一次) 0 */2 * * * /path/to/backup.sh # 常见定时示例: # 每天凌晨2点: 0 2 * * * /path/to/backup.sh # 每小时: 0 * * * * /path/to/backup.sh # 每周日22点: 0 22 * * 0 /path/to/backup.sh # 每30分钟: */30 * * * * /path/to/backup.sh
方案2:Windows PowerShell + 任务计划程序
PowerShell脚本 (backup.ps1)
# 配置
$SourcePath = "C:\SourceFolder"
$BackupPath = "D:\BackupFolder"
$LogFile = "C:\Logs\backup.log"
# 日志函数
function Write-Log {
param([string]$Message)
$Time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
"$Time $Message" | Out-File -FilePath $LogFile -Append
}
# 创建备份目录(如果不存在)
if (-not (Test-Path $BackupPath)) {
Write-Log "错误: 备份目录 $BackupPath 不存在"
exit 1
}
# 使用Robocopy同步
Write-Log "开始同步..."
$RobocopyArgs = @(
$SourcePath, $BackupPath
"/MIR", # 镜像模式(包括删除)
"/R:3", # 重试次数
"/W:10", # 等待时间
"/NP", # 不显示进度
"/NDL", # 不记录目录
"/LOG+:$LogFile" # 追加日志
)
$Result = Start-Process -FilePath "robocopy.exe" -ArgumentList $RobocopyArgs -Wait -NoNewWindow
if ($Result.ExitCode -le 7) {
Write-Log "同步完成"
} else {
Write-Log "同步失败 (错误码: $($Result.ExitCode))"
}
设置Windows任务计划
# 创建定时任务(每2小时运行一次)
$Action = New-ScheduledTaskAction -Execute "PowerShell.exe" `
-Argument "-WindowStyle Hidden -File C:\Scripts\backup.ps1"
$Trigger = New-ScheduledTaskTrigger -RepetitionInterval (New-TimeSpan -Hours 2) `
-RepetitionDuration (New-TimeSpan -Days 365) `
-At (Get-Date "00:00:00") -Once
$Principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount
Register-ScheduledTask -TaskName "文件夹同步备份" `
-Action $Action -Trigger $Trigger -Principal $Principal
方案3:使用 Systemd Timer (Linux现代方法)
创建服务单元 (/etc/systemd/system/backup.service)
[Unit] Description=文件夹同步备份服务 After=network.target [Service] Type=oneshot ExecStart=/usr/bin/rsync -avz --delete /源文件夹/ /备份盘/ StandardOutput=journal StandardError=journal
创建定时器 (/etc/systemd/system/backup.timer)
[Unit] Description=每2小时定时同步备份 [Timer] OnCalendar=*-*-* 00/2:00:00 Persistent=true [Install] WantedBy=timers.target
启用定时器
systemctl daemon-reload systemctl enable --now backup.timer systemctl start backup.timer
方案4:使用高级备份脚本(带版本控制)
#!/bin/bash
# 高级备份脚本
SOURCE="/data/important"
BACKUP_BASE="/backup"
RETENTION_DAYS=30
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
LOG="/var/log/backup_${TIMESTAMP}.log"
echo "=== 开始增量备份 ===" | tee -a $LOG
# 1. 创建快照备份
rsync -avz --link-dest="$BACKUP_BASE/latest" \
"$SOURCE/" "$BACKUP_BASE/$TIMESTAMP/" | tee -a $LOG
# 2. 更新最新版本链接
ln -sfn "$BACKUP_BASE/$TIMESTAMP" "$BACKUP_BASE/latest"
# 3. 清理旧备份
find "$BACKUP_BASE" -maxdepth 1 -type d -mtime +$RETENTION_DAYS \
! -name "latest" -exec rm -rf {} \;
echo "备份完成,保留最近${RETENTION_DAYS}天的版本" | tee -a $LOG
使用建议
-
首次运行前测试:
# Linux测试 bash -x backup.sh # 调试模式运行 # Windows测试 Set-ExecutionPolicy RemoteSigned .\backup.ps1
-
添加邮件通知(Linux):
rsync ... && echo "备份成功" | mail -s "备份报告" user@example.com
-
排除特定文件:
rsync --exclude="*.tmp" --exclude="cache/" ...
选择适合你系统的方案,记得先测试确保一切正常,需要调整定时频率可以在cron或任务计划中修改。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播