本文目录导读:

基础备份脚本(完整备份)
#!/bin/bash
# SVN 完整备份脚本
# 配置参数
SVN_REPO_PATH="/var/svn/repos/myproject"
BACKUP_DIR="/backup/svn"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/svn_backup_$DATE.dump"
# 创建备份目录
mkdir -p $BACKUP_DIR
# 执行完整备份(svnadmin dump)
echo "开始备份SVN仓库..."
svnadmin dump $SVN_REPO_PATH > $BACKUP_FILE
# 压缩备份文件
gzip $BACKUP_FILE
# 保留最近30天的备份
find $BACKUP_DIR -name "*.dump.gz" -mtime +30 -delete
echo "备份完成: ${BACKUP_FILE}.gz"
增量备份脚本(更节省空间)
#!/bin/bash
# SVN 增量备份脚本
SVN_REPO_PATH="/var/svn/repos/myproject"
BACKUP_DIR="/backup/svn"
DATE=$(date +%Y%m%d_%H%M%S)
LAST_BACKUP_FILE="$BACKUP_DIR/last_revision.txt"
# 获取当前最新版本号
CURRENT_REV=$(svnlook youngest $SVN_REPO_PATH)
# 如果是首次备份或需要完整备份
if [ ! -f "$LAST_BACKUP_FILE" ]; then
echo "首次备份,执行完整备份..."
svnadmin dump $SVN_REPO_PATH > $BACKUP_DIR/full_backup_$DATE.dump
echo $CURRENT_REV > $LAST_BACKUP_FILE
else
LAST_REV=$(cat $LAST_BACKUP_FILE)
if [ $CURRENT_REV -gt $LAST_REV ]; then
echo "从版本 $LAST_REV 增量备份到 $CURRENT_REV"
svnadmin dump $SVN_REPO_PATH --incremental -r $((LAST_REV+1)):$CURRENT_REV > $BACKUP_DIR/inc_${LAST_REV}_to_${CURRENT_REV}_$DATE.dump
echo $CURRENT_REV > $LAST_BACKUP_FILE
else
echo "无新版本,无需备份"
fi
fi
远程备份(将备份传到其他服务器)
#!/bin/bash
# SVN 远程备份脚本
# 本地配置
SVN_REPO_PATH="/var/svn/repos/myproject"
TEMP_BACKUP="/tmp/svn_temp_backup.dump"
# 远程配置
REMOTE_HOST="backup-server.example.com"
REMOTE_USER="backup_user"
REMOTE_PATH="/backup/svn/repos"
# 生成备份
DATE=$(date +%Y%m%d_%H%M%S)
echo "正在创建临时备份..."
svnadmin dump $SVN_REPO_PATH > $TEMP_BACKUP
# 压缩
gzip $TEMP_BACKUP
BACKUP_FILE="${TEMP_BACKUP}.gz"
# 传输到远程服务器
echo "正在传输到远程服务器..."
scp $BACKUP_FILE ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PATH}/svn_backup_$DATE.dump.gz
# 清理临时文件
rm -f $BACKUP_FILE
echo "远程备份完成"
配置定时任务(Cron)
添加定时执行备份(以每天凌晨2点为例):
# 编辑crontab crontab -e # 添加以下行 0 2 * * * /path/to/backup_script.sh >> /var/log/svn_backup.log 2>&1
备份验证脚本
#!/bin/bash
# SVN 备份验证脚本
BACKUP_FILE=$1
TEST_REPO="/tmp/svn_restore_test"
if [ -z "$BACKUP_FILE" ]; then
echo "用法: $0 <备份文件路径>"
exit 1
fi
# 解压(如果是.gz文件)
if [[ $BACKUP_FILE == *.gz ]]; then
gunzip -k $BACKUP_FILE
BACKUP_FILE="${BACKUP_FILE%.gz}"
fi
# 创建临时仓库并恢复
rm -rf $TEST_REPO
svnadmin create $TEST_REPO
svnadmin load $TEST_REPO < $BACKUP_FILE
if [ $? -eq 0 ]; then
echo "备份文件验证成功!"
else
echo "备份文件验证失败!"
fi
# 清理
rm -rf $TEST_REPO
注意事项
- 仓库锁定:备份期间,SVN仓库必须没有活动连接,建议在低峰期执行
- 磁盘空间:确保备份目录有足够空间(仓库大小×2)
- 测试恢复:定期在测试环境验证备份文件可用性
- 多份备份:遵循3-2-1备份原则(3份副本、2种介质、1份异地)
需要我帮你针对具体的SVN部署环境(版本、路径、备份频率)定制脚本吗?
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播