SVN是集中式管理版本库,一旦服务器端发生灾难级事故,需要使用备份数据迅速恢复,以下是针对SVN的几种不同备份方法:

生产服务器 SVN://ip1/code

镜像服务器 SVN://ip2/code_mirror

NAS存储服务器 ftp://ip3

一、sync镜像实时备份:

1、镜像服务器SVN的创建与配置方法,和生产服务器SVN创建相同,可参考之前文章。

2、用户权限配置,为了保证备份镜像的安全,可只设置一个独立的备份账户。

3、配置完成后,在生产环境服务器上进行初始化

svnsync init SVN://ip2/code_mirror file:///svn/proj/

注:

a 备份镜像服务器 svn://ip2/project,
b 生成环境服务器 file:///svn/proj/
c 生成环境服务器本地文件路径前必备为 file:///
初始化过程会要求输出系统登录用户密码,按照提示输入即可

4、添加实时同步

在hooks目录下的post-commit文件(文件要有可执行权限)中,添加同步语句

svnsync sync --non-interactive SVN://ip2/code_mirror --username svnsyncadmin --password svnsyncpassword

这样,每次生产环境的SVN版本更新时,都会实时同步到镜像服务器上。

5、svnsync命令可选项介绍

--config-dir DIR
指导Subversion从指定目录而不是默认位置(用户主目录的.subversion)读取配置信息。

--no-auth-cache
阻止在Subversion管理区缓存认证信息(如用户名密码)。

--non-interactive
如果认证失败,或者是不充分的凭证时,防止出现要求凭证的提示(例如用户名和密码)。这在运行自动脚本时非常有用,只是让Subversion失败而不是提示更多的信息。

--password PASS
指出在命令行中提供你的密码—另外,如果它是需要的,Subversion会提示你输入。

--username NAME
表示你要在命令行提供认证的用户名—否则如果需要,Subversion会提示你这一点。

二、hotcopy定时备份 + ZIP压缩 + FTP上传到NAS

svn提供了hotcopy和dump两种备份方式。

hotcopy备份本质上就是仓库完整拷贝
优点 - 备份过程较快,灾难恢复也快。
缺点 - 无法分段备份,因此单次备份时,硬盘消耗相对较大 。

dump是官方推荐的备份方式,需使用专门的版本还原机制。
优点 – 可全量备份也可增量备份,可根据需要灵活备份或还原指定版本。
缺点 – 相对还原麻烦,特别是版本量多时,还原速度较慢。

实践中发现hotcopy备份与还原更为方便,而且hotcopy后,可以使用ZIP进行压缩,再通过FTP同步到NAS上,NAS的大硬盘可以满足大容量备份文件,而且NAS上还可以实现更多的备份功能,进一步提高安全性。

这里只记录hotcopy备份方法。

1、hotcopy本地手动备份

svnadmin hotcopy /svn/project /backup/project

2、hotcopy本地自动备份
通过宝塔的定时任务或者linux的corn功能,配合bash脚本实现,网上例子不再赘述。

3、压缩和FTP上传功能
通过BASH实现,不再赘述

三、python 实现 SVN全功能备份

以下是我自己正在使用的python全功能备份脚本,配合宝塔的定时功能,每天早上6点定时执行即可,实现了如下功能:

(1)执行svn的sync镜像备份(需要先初始化)
(2)执行svn的hotcopy备份
(3)压缩hotcopy备份为zip文件
(4)通过FTP上传ZIP备份文件到NAS存储
(5)自定义设置保留备份天数
(6)清除本地和FTP上过期备份功能
(7)记录当天备份的过程日志
(8)备份完成,将成功或者失败的日志,通过Email邮件通知(推荐使用QQ邮箱的SMTP服务,可以在微信上收到邮件通知)
(9)防火墙需要开放相应的端口

SVN_EMAIL.png
svn_log.png

价格: 49.99 元
VIP会员价格:49.99元终身会员免费
温馨提示:登录付款后可永久阅读隐藏内容。 付费可读