本文目录导读:

我来为您介绍几种常见的自动备份脚本方案,涵盖不同操作系统和使用场景。
Linux/Mac 系统备份脚本
基础文件备份脚本
#!/bin/bash
# 备份配置
BACKUP_DIR="/backup/users"
SOURCE_DIR="/home"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=30
# 创建备份目录
mkdir -p "$BACKUP_DIR/$DATE"
# 备份用户数据
echo "开始备份用户数据..."
tar -czf "$BACKUP_DIR/$DATE/userdata.tar.gz" "$SOURCE_DIR"
# 删除旧备份
find "$BACKUP_DIR" -type d -mtime +$RETENTION_DAYS -exec rm -rf {} \;
echo "备份完成!备份文件: $BACKUP_DIR/$DATE/userdata.tar.gz"
增量备份脚本(使用rsync)
#!/bin/bash
# 配置
SOURCE_DIR="/home"
BACKUP_DIR="/backup/users"
LOG_FILE="/var/log/backup.log"
# 时间戳函数
timestamp() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')]"
}
# 执行备份
echo "$(timestamp) 开始增量备份..." >> "$LOG_FILE"
rsync -avz --delete \
--link-dest="$BACKUP_DIR/current" \
"$SOURCE_DIR/" \
"$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S)/" \
>> "$LOG_FILE" 2>&1
# 更新当前备份链接
rm -f "$BACKUP_DIR/current"
ln -s "$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S)" "$BACKUP_DIR/current"
echo "$(timestamp) 备份完成" >> "$LOG_FILE"
Windows 系统备份脚本(PowerShell)
PowerShell备份脚本
# 备份配置
$sourceDir = "C:\Users"
$backupDir = "D:\Backup"
$date = Get-Date -Format "yyyyMMdd_HHmmss"
$retentionDays = 30
# 创建备份目录
$backupPath = Join-Path $backupDir "UserBackup_$date"
New-Item -ItemType Directory -Path $backupPath -Force
# 需要备份的用户文件夹
$userFolders = @(
"Documents",
"Desktop",
"Pictures",
"Downloads"
)
# 获取所有用户
$users = Get-ChildItem -Path $sourceDir -Directory | Where-Object {
$_.Name -notmatch '^(Public|Default|Default User|All Users)$'
}
# 备份每个用户的数据
foreach ($user in $users) {
Write-Host "备份用户: $($user.Name)"
foreach ($folder in $userFolders) {
$sourceFolder = Join-Path $user.FullName $folder
$destFolder = Join-Path $backupPath $user.Name $folder
if (Test-Path $sourceFolder) {
# 使用Robocopy进行备份
robocopy $sourceFolder $destFolder /E /COPY:DAT /R:3 /W:5 /NP
}
}
}
# 清理旧备份
$oldBackups = Get-ChildItem -Path $backupDir -Directory |
Where-Object { $_.CreationTime -lt (Get-Date).AddDays(-$retentionDays) }
foreach ($old in $oldBackups) {
Remove-Item -Path $old.FullName -Recurse -Force
Write-Host "删除旧备份: $($old.Name)"
}
Write-Host "备份完成!"
定时任务配置
Linux Cron 配置
# 编辑crontab crontab -e # 每天凌晨2点执行备份 0 2 * * * /path/to/backup_script.sh # 每周日凌晨3点执行完整备份 0 3 * * 0 /path/to/full_backup.sh
Windows 任务计划程序
# 创建计划任务(管理员模式运行PowerShell)
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\Backup.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At 2am
$principal = New-ScheduledTaskPrincipal -UserId "SYSTEM" -LogonType ServiceAccount
Register-ScheduledTask -TaskName "UserBackup" `
-Action $action `
-Trigger $trigger `
-Principal $principal `
-Description "自动备份用户数据"
数据库备份示例
MySQL 数据库备份脚本
#!/bin/bash
# 数据库配置
DB_USER="root"
DB_PASS="password"
DB_NAME="mydatabase"
BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
# 备份数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > "$BACKUP_DIR/${DB_NAME}_$DATE.sql.gz"
# 备份所有数据库
mysqldump -u$DB_USER -p$DB_PASS --all-databases | gzip > "$BACKUP_DIR/alldb_$DATE.sql.gz"
# 保留最近7天备份
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete
邮件通知功能
#!/bin/bash
# 备份和通知配置
BACKUP_FILE="/backup/userdata_$(date +%Y%m%d).tar.gz"
EMAIL="admin@example.com"
# 执行备份
tar -czf "$BACKUP_FILE" /home
# 检查备份结果
if [ $? -eq 0 ]; then
# 计算文件大小
SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
# 发送成功通知
echo "备份成功完成于 $(date)" | \
mail -s "备份成功 - 大小: $SIZE" \
-a "From: backup@server.com" \
$EMAIL
else
# 发送失败通知
echo "备份失败于 $(date)" | \
mail -s "备份失败警告" \
-a "From: backup@server.com" \
$EMAIL
fi
压缩和加密备份
#!/bin/bash # 加密备份(使用gpg) BACKUP_FILE="userbackup_$(date +%Y%m%d).tar.gz.gpg" PASSPHRASE="your-secure-passphrase" # 创建备份并加密 tar -czf - /home/user | \ gpg --batch --passphrase "$PASSPHRASE" --symmetric > "$BACKUP_FILE" # 解密还原 # gpg --batch --passphrase "$PASSPHRASE" --decrypt "$BACKUP_FILE" | tar -xzf -
使用建议
- 测试脚本:先在测试环境运行,确认没问题再部署
- 错误处理:添加完善的错误处理机制
- 日志记录:记录详细的备份日志
- 监控报警:设置失败后的通知机制
- 定期验证:定期检查备份文件的完整性
- 多重备份:考虑异地或云存储备份
选择适合您需求的方案,并根据实际情况调整参数,如果需要更详细的功能,请告知具体需求。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播