SVN 双机热备份(crontab定时)
来源:互联网 发布:无锡软件开发公司 编辑:程序博客网 时间:2024/06/12 18:27
svn服务用svnsync命令双机热备
源目录: svn://srcIP/svndb
目标目录: svn://desIP/svndb
步骤:
如果目标目录存在相同的项目,请先清除,重新建立空项目,比如:
mkdir -p /data/svndata/svndb
mkdir -p /home/svn/pro_bakup
svnadmin create /data/svndata/svndb
svnadmin create /home/svn/pro_bakup
2.启动从机上的svn
svnserve -d -r /data/svndata/
svnserve -d -r /home/svn/pro_bakup
3.在从机上执行:
cd /data/svndata/svndb/hooks
cp pre-revprop-change.tmpl pre-revprop-change
vi pre-revprop-change
把 pre-revprop-change最后一行改成 exit 0,
然后 chmod 755 pre-revprop-change
4.把主机上的/data/svndata/svndb/conf目录打个包,发到从机的同样路径,覆盖解压。
5. 在从机上执行
svnsync init file:///data/svndata/svndb svn://srcIP/svndb
svnsync init file:///home/svn/pro_bakup svn://192.168.1.234/root
中途会问你主机的root密码及svn的用户名 密码,填入即可。然后显示:
Copied properties for revision 0.(复制版本 0 的属性。)
6.初始化完成后,执行
svnsync sync file:///data/svndata/svndb 进行同步
svnsync sync file:///home/svn/pro_bakup
svnsync sync --non-interactive file:///home/svn/pro_bakup
svnsync sync file:///home/svn/pro_bakup
svnsync sync file:///home/svn/pro_bakup --username syncdor --password syncdor82821860
7. 为了能够在主机更新时,从机自动同步,需要在主机做些操作。
在主机/hooks/下建立/修改post-commit脚本,最后两行替换为,内容如下:
svnsync sync --non-interactive svn://desIP/svndb --username name --password pwd
svnsync sync --non-interactive svn://192.168.1.235 --username user --password user
更新同步
在源库的hooks下面,添加post-commit 脚本
可拷贝post-commit.tmpl
即
cp post-commit.tmpl post-commit
然后把 post-commit 中,最后两行替换为
svnsync sync --non-interactive svn://192.168.1.235 --username syncdor --password syncdor82821860
即提交更新后,即执行同步命令,不进行交互
把post-commit 设为755权限。
chmod 755 post-commit
chmod +x post-commit
ps:
如果post-commit脚本出错,或者无可执行权限,在提交更新时会报错
修改原始版本库的地址
如果原始版本库的地址改变了(比如说换了域名或者IP地址),在svn中可以使用 svn relocate 来实现,但在svnsync中,就必须用propset来实现了,具体指令如下:
svn propget svn:sync-from-url –-revprop -r 0 file:///var/svn/project/
# 这个操作会显示原始版本库的地址(假如你忘了原始地址就很有用)
# http://192.168.1.234/root
# 设置新的版本库地址
svn propset svn:sync-from-url –-revprop -r 0 http://192.168.1.236/root file:///home/svn/pro_bakup
# 再次同步
svnsync sync --noninteractive file:///home/svn/pro_bakup
如报错:
svnsync: Destination HEAD (20030) is not the last merged revision (20029); have you committed to the destination without using svnsync?
svn propset --revprop -r 0 svn:sync-last-merged-rev 20029 file:///home/svn/pro_bakup
报错
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
svnsync: Couldn't get lock on destination repos after 10 attempts
svn propdel svn:sync-lock --revprop -r0 file:///home/svn/pro_bakup
crontab设置
vi /home/bak_sh/svnsync.sh
svnsync sync file:///home/svn/pro_bakup --username username --password password --no-auth-cache
添加计划任务(修改/etc/crontab)
crontab -e
这时就像使用vi编辑器一样,可以对计划任务进行编辑
或者直接编辑 /etc/crontab
输入以下内容并保存:
0 */1 * * * root /home/bak_sh/svnsync.sh
(表示:每小时以root权限开始执行svnsync.sh脚本)
cron时间的格式是
分 时 日 月 周
保存退出!
重新启动crond
/etc/rc.d/init.d/crond restart
或者:
service crond restart
查看任务执行日志
# tail -f /var/log/cron
源目录: svn://srcIP/svndb
目标目录: svn://desIP/svndb
步骤:
如果目标目录存在相同的项目,请先清除,重新建立空项目,比如:
mkdir -p /data/svndata/svndb
mkdir -p /home/svn/pro_bakup
svnadmin create /data/svndata/svndb
svnadmin create /home/svn/pro_bakup
2.启动从机上的svn
svnserve -d -r /data/svndata/
svnserve -d -r /home/svn/pro_bakup
3.在从机上执行:
cd /data/svndata/svndb/hooks
cp pre-revprop-change.tmpl pre-revprop-change
vi pre-revprop-change
把 pre-revprop-change最后一行改成 exit 0,
然后 chmod 755 pre-revprop-change
4.把主机上的/data/svndata/svndb/conf目录打个包,发到从机的同样路径,覆盖解压。
5. 在从机上执行
svnsync init file:///data/svndata/svndb svn://srcIP/svndb
svnsync init file:///home/svn/pro_bakup svn://192.168.1.234/root
中途会问你主机的root密码及svn的用户名 密码,填入即可。然后显示:
Copied properties for revision 0.(复制版本 0 的属性。)
6.初始化完成后,执行
svnsync sync file:///data/svndata/svndb 进行同步
svnsync sync file:///home/svn/pro_bakup
svnsync sync --non-interactive file:///home/svn/pro_bakup
svnsync sync file:///home/svn/pro_bakup
svnsync sync file:///home/svn/pro_bakup --username syncdor --password syncdor82821860
7. 为了能够在主机更新时,从机自动同步,需要在主机做些操作。
在主机/hooks/下建立/修改post-commit脚本,最后两行替换为,内容如下:
svnsync sync --non-interactive svn://desIP/svndb --username name --password pwd
svnsync sync --non-interactive svn://192.168.1.235 --username user --password user
更新同步
在源库的hooks下面,添加post-commit 脚本
可拷贝post-commit.tmpl
即
cp post-commit.tmpl post-commit
然后把 post-commit 中,最后两行替换为
svnsync sync --non-interactive svn://192.168.1.235 --username syncdor --password syncdor82821860
即提交更新后,即执行同步命令,不进行交互
把post-commit 设为755权限。
chmod 755 post-commit
chmod +x post-commit
ps:
如果post-commit脚本出错,或者无可执行权限,在提交更新时会报错
修改原始版本库的地址
如果原始版本库的地址改变了(比如说换了域名或者IP地址),在svn中可以使用 svn relocate 来实现,但在svnsync中,就必须用propset来实现了,具体指令如下:
svn propget svn:sync-from-url –-revprop -r 0 file:///var/svn/project/
# 这个操作会显示原始版本库的地址(假如你忘了原始地址就很有用)
# http://192.168.1.234/root
# 设置新的版本库地址
svn propset svn:sync-from-url –-revprop -r 0 http://192.168.1.236/root file:///home/svn/pro_bakup
# 再次同步
svnsync sync --noninteractive file:///home/svn/pro_bakup
如报错:
svnsync: Destination HEAD (20030) is not the last merged revision (20029); have you committed to the destination without using svnsync?
svn propset --revprop -r 0 svn:sync-last-merged-rev 20029 file:///home/svn/pro_bakup
报错
Failed to get lock on destination repos, currently held by 'bug1.corp.scmbbs.com:0c424c20-2e3b-0410-bd34-7fdd53c25d02'
svnsync: Couldn't get lock on destination repos after 10 attempts
svn propdel svn:sync-lock --revprop -r0 file:///home/svn/pro_bakup
crontab设置
vi /home/bak_sh/svnsync.sh
svnsync sync file:///home/svn/pro_bakup --username username --password password --no-auth-cache
添加计划任务(修改/etc/crontab)
crontab -e
这时就像使用vi编辑器一样,可以对计划任务进行编辑
或者直接编辑 /etc/crontab
输入以下内容并保存:
0 */1 * * * root /home/bak_sh/svnsync.sh
(表示:每小时以root权限开始执行svnsync.sh脚本)
cron时间的格式是
分 时 日 月 周
保存退出!
重新启动crond
/etc/rc.d/init.d/crond restart
或者:
service crond restart
查看任务执行日志
# tail -f /var/log/cron
阅读全文
0 0
- SVN 双机热备份(crontab定时)
- 双机热备(定时同步)
- mysql双机热备份
- oracle 双机热备份
- 双机热备份技术
- oracle双机热备份
- 双机热备份
- 什么是双机热备份
- 数据库双机热备份
- 数据库双机热备份
- oracle双机热备份方法
- oracle双机热备份方法
- Mysql的双机热备份
- win2k服务器版双机热备份
- MySQL双机热备份实施方案
- 配置 MySQL 双机热备份
- oracle双机热备份方法
- “双机热备份”的解释
- 安装jenkins
- Virtual SVN + Ubuntu 访问 SSL handshake failed
- 深入浅出ES6(三):生成器 Generators
- 记录一下HTC vive播放2d视频或全景视频
- centos 7.2 安装mysql 修改 初始密码
- SVN 双机热备份(crontab定时)
- 常用 Git 命令清单
- list的extend()与append()的使用和区别 Python
- solr学习安装随笔
- adobe acrobat xi pro下载 + 破解 ——找到了靠谱的下载及破解地址
- SwipeRefreshLayout的下拉刷新和上拉加载
- Spring的注入,注解
- IOS开发环境更换后重新制作Provisioning Profile证书详解
- Linux下C语言开发-----动静态库的生成