本文目录导读:

数据库备份脚本
MySQL备份示例
#!/bin/bash
# 数据库备份脚本
# 配置
DB_USER="root"
DB_PASS="password"
DB_NAME="mydb"
BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/${DB_NAME}_${DATE}.sql"
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行备份
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > $BACKUP_FILE
# 压缩备份
gzip $BACKUP_FILE
# 保留最近7天的备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete
echo "备份完成: ${BACKUP_FILE}.gz"
PostgreSQL备份
#!/bin/bash
# PostgreSQL备份
PG_USER="postgres"
PG_DB="mydb"
BACKUP_DIR="/backup/postgres"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份
pg_dump -U $PG_USER $PG_DB > ${BACKUP_DIR}/${PG_DB}_${DATE}.sql
# 压缩
gzip ${BACKUP_DIR}/${PG_DB}_${DATE}.sql
文件和目录备份脚本
#!/bin/bash
# 文件系统备份
SOURCE_DIR="/var/www/html"
BACKUP_DIR="/backup/files"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建全量备份
tar -czf ${BACKUP_DIR}/full_backup_${DATE}.tar.gz $SOURCE_DIR
# 或创建增量备份(使用rsync)
rsync -av --delete $SOURCE_DIR ${BACKUP_DIR}/incremental_${DATE}/
应用配置备份
#!/usr/bin/env python3
# Python配置备份脚本
import json
import shutil
import os
from datetime import datetime
def backup_config(config_path, backup_dir):
"""备份配置文件"""
timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
config_name = os.path.basename(config_path)
backup_file = f"{backup_dir}/{config_name}.{timestamp}.bak"
# 复制文件
shutil.copy2(config_path, backup_file)
# 读取并保存JSON格式
with open(config_path, 'r') as f:
config_data = json.load(f)
with open(f"{backup_file}.json", 'w') as f:
json.dump(config_data, f, indent=2)
print(f"配置已备份: {backup_file}")
# 使用示例
backup_config("/etc/app/config.json", "/backup/configs")
版本控制式备份
#!/bin/bash
# Git式备份
BACKUP_DIR="/backup/git_style"
PROJECT_DIR="/var/www/project"
DATE=$(date +%Y%m%d)
# 创建快照
cp -r $PROJECT_DIR ${BACKUP_DIR}/snapshot_${DATE}
# 或使用硬链接(节省空间)
cp -rl $PROJECT_DIR ${BACKUP_DIR}/snapshot_${DATE}
自动化备份脚本(含日志)
#!/bin/bash
# 完整的自动化备份脚本
# 配置
BACKUP_ROOT="/backup"
LOG_FILE="/var/log/backup.log"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=30
# 日志函数
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a $LOG_FILE
}
# 备份函数
backup_database() {
log "开始备份数据库..."
if mysqldump -u root -p$DB_PASS --all-databases > ${BACKUP_ROOT}/db/all_${DATE}.sql; then
log "数据库备份成功"
else
log "数据库备份失败"
return 1
fi
}
backup_files() {
log "开始备份文件系统..."
if tar -czf ${BACKUP_ROOT}/files/files_${DATE}.tar.gz /etc /var/www; then
log "文件备份成功"
else
log "文件备份失败"
return 1
fi
}
cleanup_old_backups() {
log "清理过期备份..."
find $BACKUP_ROOT -name "*.sql" -mtime +$RETENTION_DAYS -delete
find $BACKUP_ROOT -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete
}
# 主执行流程
main() {
log "开始备份任务"
# 创建备份目录
mkdir -p ${BACKUP_ROOT}/{db,files}
# 执行备份
backup_database
backup_files
# 清理旧备份
cleanup_old_backups
log "备份任务完成"
}
# 执行主函数
main
使用建议
备份策略最佳实践:
- 全量备份:每周一次完整备份
- 增量备份:每天备份变化数据
- 差异备份:定期备份与上次全量备份的差异
创建定时任务(crontab):
# 每天凌晨2点执行备份 0 2 * * * /path/to/backup_script.sh # 每周日凌晨3点执行全量备份 0 3 * * 0 /path/to/full_backup.sh
备份验证脚本:
#!/bin/bash
# 验证备份完整性
verify_backup() {
local backup_file=$1
if [[ $backup_file == *.sql ]]; then
# 验证SQL文件
head -n 5 $backup_file | grep -q "CREATE TABLE" && echo "SQL备份有效"
elif [[ $backup_file == *.tar.gz ]]; then
# 验证tar文件
tar -tzf $backup_file > /dev/null && echo "压缩包有效"
fi
}
选择哪种脚本取决于你的具体需求:
- 数据库场景:使用数据库原生工具
- 文件系统:使用tar/rsync
- 配置更新:使用版本控制或快照
记得定期测试备份恢复过程,确保备份可用!
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播