1、把主svn上的数据同步至从svn上,以备不时之需

   主:192.168.9.87 

   从:192.168.9.88


2、在从机器上做以下操作:

自动同步,在主上post-commit添加

svnsync sync  --non-interactive svn://192.168.9.87/usca  --username usca --password xxx

1)、创建所需目录,并修改属主属组

sudo mkdir -p /storage/svn/{logs,pids,repository/ops}

sudo chown -R richmail.richmail /storage

cd /storage/svn/repository


2)、创建ops库

svnadmin create ops

cd ops/hooks


3)、复制pre-revprop-change并修改权限和内容

cp pre-revprop-change.tmpl pre-revprop-change

chmod 755 pre-revprop-change

修改 pre-revprop-change

为 echo “Changing revision properties other than svn:log is prohibited” >&2
exit 0(1修改为0)


4)、执行同步初始化操作

svnsync init file:///storage/svn/repository/ops svn://192.168.9.97/ops --username=liulieyin --password=liulieyin


5)、执行同步操作

svnsync sync file:///storage/svn/repository/ops

svn的svnsync的同步工具_第1张图片

=================================遇到的问题==========================================

1)、

wKioL1Y5fsWB5Wr0AAEXusL3vEs057.jpg解决方法:

dbus-uuidgen > /var/lib/dbus/machine-id

2)、

svn的svnsync的同步工具_第2张图片

Failed to get lock on destination repos, currently held by 'xxxxx'

解决方法:

svn propdel svn:sync-lock --revprop -r 0  file:///storage/svn/repository/ops

3)、

svnsync: Destination HEAD (29) is not the last merged revision (28);

have you committed to the destination without using svnsync?

当从库同步版本到28时,主库进行了添加文件,删除文件的操作,由于主库的版本变成了29但内容却没有变化,这时从库进行同步时就会报上述错误。

解决方法:

svn propset --revprop -r 0 svn:sync-last-merged-revision 29 file:///storage/svn/repository/ops

svn propset --revprop -r 0 svn:sync-last-merged-rev 29 file:///storage/svn/repository/ops

之后再同步就可以啦。


同步完成之后,可以启动服务登录查看一下:

svnserve -d -r /storage/svn/repository --log-file /storage/svn/logs/svn.log --pid-file