svn数据库自动备份脚本

创建一个存放备份数据的路径
mkdir /data/svnbak -p


采用shell脚本的方式实现自动备份


#vim backup.sh


#!/bin/bash

log="/data/svnbak/last_add_backed_up.log"   # 添加日志文件,打印开始结束时间,方便查看执行时间
echo "********************"backup start time: `date -d today +"%Y-%m-%d %T"`"***************">> $log

cd /data/svnbak
mkdir `date +%F`
chmod 755 `date +%F`
cd  `date +%F`
ls -l /home/svn-repos | awk '$1~"d"{print$8}' > list #注:/home/svn-repos是svn数据库的路径


for i in `cat list`
do
    mkdir /data/svnbak/`date +%F`/$i #注:在另一个路径下创建与数据库相同的目录
done


SRCPATH=/home/svn-repos #定义仓库路径
DISTPATH=/data/svnbak/`date +%F`  #定义备份数据存放的路径;
echo $DISTPATH
cat $DISTPATH/list | while read filename
do
    svnadmin hotcopy $SRCPATH/$filename  $DISTPATH/$filename --clean-logs #注:此处使用hotcopy开始备份
done


echo "-------------------backup end time: \"`date -d today +\"%Y-%m-%d %T\"`\"-------------------" >> $log


chown www-data.www-data $DISTPATH -R #注:备份之后修改成与原数据库相同的权限


#删除10天前的备份
basedir=/data/svnbak/ #备份的路径
old_day=`date +%F -d"-10 days"`
filename=$basedir/$old_day
rm -rf $filename


可以把这个脚本添加到计划任务中,实现每个星期六的凌晨1点01分周期性的自动备份,如下内容所示:
crontab -e

01 01 * * 6 /bin/bash /root/backup.sh
posted @   reblue520  阅读(266)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示