本文目录导读:

- 核心思路:批量备份通用逻辑
- 场景1:批量备份多个重要目录(Linux Shell脚本)
- 场景2:批量备份多个MySQL/MariaDB数据库
- 场景3:批量备份并同步到远程服务器(含增量备份)
- 场景4:Windows 环境批量备份(PowerShell脚本)
- 如何运行这些脚本?
- 注意事项(让备份更可靠)
是的,实用脚本完全可以实现批量备份功能,无论是备份文件、数据库、还是整个服务器配置,都可以通过脚本(Shell、Python、PowerShell 等)自动化完成。
下面我会提供几个最常见场景的批量备份脚本示例,你可以直接参考或修改使用。
核心思路:批量备份通用逻辑
- 定义来源:需要备份的文件列表、数据库列表或目录。
- 定义目标:备份存放的位置(本地目录、远程服务器、云存储)。
- 执行操作:压缩、复制、转储。
- 加时间戳:防止同名覆盖。
- 可选的清理:删除N天前的旧备份。
场景1:批量备份多个重要目录(Linux Shell脚本)
这个脚本会批量压缩 /etc、/var/www 和 /home 目录,并加上日期。
#!/bin/bash
# batch_backup_dirs.sh
# 配置
BACKUP_DIR="/backup/files"
DATE=$(date +%Y%m%d_%H%M%S)
LOG_FILE="/var/log/batch_backup.log"
# 要备份的目录列表
DIRS_TO_BACKUP=(
"/etc"
"/var/www/html"
"/home"
"/root"
)
# 创建备份目录
mkdir -p "$BACKUP_DIR"
echo "==============================" | tee -a $LOG_FILE
echo "开始批量备份: $DATE" | tee -a $LOG_FILE
# 循环备份每个目录
for dir in "${DIRS_TO_BACKUP[@]}"; do
# 获取目录名(去掉路径)
dir_name=$(basename "$dir")
# 生成备份文件名
backup_file="${BACKUP_DIR}/${dir_name}_${DATE}.tar.gz"
# 执行压缩备份
tar -czf "$backup_file" "$dir" 2>&1
# 检查是否成功
if [ $? -eq 0 ]; then
echo " [成功] 备份 $dir 到 $backup_file" | tee -a $LOG_FILE
else
echo " [失败] 备份 $dir" | tee -a $LOG_FILE
fi
done
# 清理7天前的旧备份
echo "开始清理 7天前的旧备份..." | tee -a $LOG_FILE
find "$BACKUP_DIR" -name "*.tar.gz" -type f -mtime +7 -delete
echo "批量备份完成" | tee -a $LOG_FILE
场景2:批量备份多个MySQL/MariaDB数据库
适合管理多个站点或应用,每个数据库独立备份。
#!/bin/bash
# batch_backup_mysql.sh
# 配置
DB_USER="root"
DB_PASSWORD="your_password"
BACKUP_DIR="/backup/databases"
DATE=$(date +%Y%m%d_%H%M%S)
# 获取所有数据库列表(排除系统库)
DATABASES=$(mysql -u$DB_USER -p$DB_PASSWORD -e "SHOW DATABASES;" | grep -Ev "(Database|information_schema|performance_schema|mysql|sys)")
mkdir -p "$BACKUP_DIR"
echo "开始批量备份数据库: $DATE"
for db in $DATABASES; do
backup_file="${BACKUP_DIR}/${db}_${DATE}.sql.gz"
echo "正在备份数据库: $db"
# 导出并压缩
mysqldump -u$DB_USER -p$DB_PASSWORD --databases "$db" | gzip > "$backup_file"
if [ $? -eq 0 ]; then
echo " [成功] $db -> $backup_file"
else
echo " [失败] $db"
fi
done
# 清理30天前的旧备份
find "$BACKUP_DIR" -name "*.sql.gz" -type f -mtime +30 -delete
echo "数据库批量备份完成"
场景3:批量备份并同步到远程服务器(含增量备份)
使用 rsync 实现增量批量备份,效率高。
#!/bin/bash
# batch_rsync_backup.sh
# 配置
LOCAL_BACKUP_DIR="/backup/incremental"
REMOTE_USER="backup_user"
REMOTE_HOST="192.168.1.100"
REMOTE_DIR="/remote_backup/files"
# 要批量同步的本地目录
SOURCE_DIRS=(
"/data/project1"
"/data/project2"
"/data/project3"
)
echo "开始批量rsync增量备份: $(date)"
for src in "${SOURCE_DIRS[@]}"; do
# 获取目录名
project=$(basename "$src")
echo "同步 ${src} 到远程 ${REMOTE_HOST}:${REMOTE_DIR}/${project}"
# rsync 参数说明:-a归档模式,-v详细,-z压缩,--delete删除远程多余文件
rsync -avz --delete "$src" "${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/${project}"
if [ $? -eq 0 ]; then
echo " [成功] $project"
else
echo " [失败] $project"
fi
done
echo "批量增量备份完成: $(date)"
场景4:Windows 环境批量备份(PowerShell脚本)
# batch_backup_windows.ps1
$BackupDir = "D:\Backups"
$Date = Get-Date -Format "yyyyMMdd_HHmmss"
$LogFile = "$BackupDir\backup_log.txt"
# 要备份的路径列表
$Paths = @(
"C:\Users\Admin\Documents",
"C:\Projects",
"D:\Database"
)
# 创建备份目录
New-Item -ItemType Directory -Force -Path "$BackupDir\Files"
Write-Output "开始批量备份: $Date" | Out-File -FilePath $LogFile -Append
foreach ($Path in $Paths) {
$FolderName = Split-Path $Path -Leaf
$ZipFile = "$BackupDir\Files\${FolderName}_${Date}.zip"
# 使用7-Zip或系统压缩(需要安装7-Zip或使用Compress-Archive)
try {
Compress-Archive -Path $Path -DestinationPath $ZipFile -Force
Write-Output "[成功] $Path -> $ZipFile" | Out-File -FilePath $LogFile -Append
}
catch {
Write-Output "[失败] $Path - $_" | Out-File -FilePath $LogFile -Append
}
}
# 删除7天前的备份
Get-ChildItem "$BackupDir\Files\*.zip" | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item
Write-Output "批量备份完成" | Out-File -FilePath $LogFile -Append
如何运行这些脚本?
-
Linux环境:
- 保存脚本文件,
batch_backup.sh - 赋予执行权限:
chmod +x batch_backup.sh - 执行:
./batch_backup.sh - 加入定时任务(crontab):每天早上3点执行
0 3 * * * /root/scripts/batch_backup.sh
- 保存脚本文件,
-
Windows环境:
- 保存为
.ps1文件 - 打开PowerShell(管理员)
- 先运行:
Set-ExecutionPolicy RemoteSigned(允许本地脚本执行) - 执行:
.\batch_backup_windows.ps1 - 使用“任务计划程序”定时运行。
- 保存为
注意事项(让备份更可靠)
- 测试:先手动跑一次,确认备份文件能正常恢复。
- 日志:建议保留详细的备份日志,便于排查问题。
- 通知:可以加入
curl或邮件命令,备份失败时发通知。 - 加密:敏感数据建议用
gpg或openssl加密。 - 校验:备份后生成hash值(
md5sum),恢复时校验完整性。
脚本实现批量备份非常实用,以上示例稍微修改路径、账号等参数即可直接投入使用,关键在于测试验证和自动化定时。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播