因为我现在面临的问题是将一台服务器上的所有trac服务全部移植到另一台新的服务器上,所以需要对所有数据和资料进行备份移植。备份的过程也是有一定顺序的。
1.数据库的备份和恢复
数据库的备份是很重要的,以为数据库存储了trac的项目信息,如果没有完整移植,会影响后面的所有工作。我们使用的是postgres数据库。postgres数据库自带了导出数据和导入数据的功能,可以参考后面的连接。数据的导出需要在原服务器上进行,也可以从其他客户端使用ssh登录服务器进行。命令很简单,不过要先切换到postgres用户:
sudo su postgres # 切换到postgres用户
pg_dump trac > trac.bak #备份trac数据库
数据库本分完毕后,我们在新服务器上使用ssh的远程拷贝功能,将备份文件复制到新服务器上进行移植:
ssh root@115.156.219.36 # 输入密码
sudo su postgres # 切换到postgres用户
scp trac.bak root@115.156.219.42:/home/trac/trac.bak # 输入密码
在新服务器上进行操作:
sudo su postgres # 切换到postgres用户
createuser -A -D -P hcx # 创建smartcar用户,该用户要与原数据库的用户相同
Shall the new role be allowed to create more new roles? (y/n) y
createdb -O hcx trac # 创建trac数据库,如果已经存在,要用dropdb命令删除数据库再创建
psql trac < /home/trac/trac.bak #数据库还原
exit # 退出postgres用户,回到正常用户提示行
2.trac的备份和恢复
trac的备份可以直接复制trac的仓库,但是不提倡这种方法,因为这种方法会产生一些不必要的麻烦。trac本身带有一种热备份的工具,就是可以在服务器运行的同时进行备份。命令很简单:
sudo trac-admin /var/www/trac hotcopy /home/trac_bak
恢复也很简单,将备份的文件复制到服务器相应的位置,并注意将文件夹用户修改为apache用户,即:
scp -r /home/trac_bak root@115.156.219.42:/home/trac/trac #远程拷贝
sudo chown -R www-data:www-data /home/trac/trac
sudo trac-admin /home/trac/trac upgrade
sudo trac-admin /home/trac/trac wiki upgrade
然后要修改trac.ini文件的部分路径,更新服务器即可。trac插件的移植,我一直都没有想到很好的办法,所以插件都是手动安装的。
3.svn的备份和还原
完全备份和增量备份svn:
sudo svnadmin dump /svn/project/www > full.svn.bak #完全备份/svn/project/www这个版本库,并另存为full.svn.bak
sudo svnadmin dump /svn/project/www -r 8 –incremental > svn.bak.1 #以增量把版本库8转存到svn.bak.1
参数介绍:
-r [--revision] :指定版本ARG(或X:Y范围)
–incremental :以增量方式进行转存
–deltas :在转存输出中使用差异
-q [--quiet] :在标准错误输出不显示进度(仅错误)
dump备份还原:
sudo svnadmin create /svn/project/test #创建一个新的版本库
sudo svnadmin load /svn/project/test < full.svn.bak #现还原完全备份
sudo svnadmin load /svn/project/test < svn.bak.1 #再还原增量备份的内容
热拷贝:
sudo svnadmin hotcopy /svn/project/www /root/backup.svn.www/ #热拷贝www这个版本库,可以直接拿来用