Perforce服务器的备份还原
备份:
Perforce服务器的备份分两个部分:一个是数据库的备份,一个是源文件的备份。数据库的备份简单的说就是创建一个checkpoint然后备份 checkpoint文件。源文件的备份就更简单了,用你喜欢的任何方式做一个Perforce代码库(depot)的备份。
1、备份数据库
p4 admin checkpoint -z (或者p4d -r $P4ROOT -z -jc)
这两个命令作用相同,就是把数据库里的全部信息导出来并生成一个checkpoint文件和一个jounal文件:checkpoint.nnn.gz和journal.n.gz
cp checkpoint.nnn.gz /backup/location/checkpoint.nnn.gz
cp journal.nnn.gz /backup/location/journal.nnn.gz
2、备份源文件
找到源库的文件夹。默认位置是$P4ROOT(所有db.*文件所在处)下的源库名。比如说如果你有一个depot叫projectA,
tar czvf projectA.tar.gz $P4ROOT/projectA
...
cp projectA.tar.gz /backup/location
还原:
1、数据库损坏但源文件没有受影响。
2、数据库和源文件都损坏了。
一、如果只是数据库损坏,你只需要恢复数据库。步骤如下:
1) 暂停Perforce服务器。
p4 admin stop
2) 将所有数据库文件(db.*)改名或移动到另一个文件夹(最好不要直接删除)。
mv $P4ROOT/db.* /somewhere/safe
3) 运行p4d从最新的checkpoint和journal文件恢复数据库。
p4d -r $P4ROOT -jr checkpoint_file journal_file
注意如果checkpoint和journal是压缩文件的话,需要加上-z标志。
p4d -r $P4ROOT -z -jr checkpoint_file journal_file
到这里数据库就应该恢复好了,你可以重新启动Perforce服务器检查恢复是否成功。
二、数据库和源文件都损坏了。
1) 如上恢复数据库,但是不需要使用journal文件,因为你需要从备份中恢复源文件,当前的日志文件包含的信息不再适用。
2) 恢复源文件。从备份中拷贝(如果压缩过的话先解压)源文件到Perforce库文件应在的位置,比如$P4ROOT.
任何恢复完成后都应该确定所有版本文件没有问题,运行:
p4 verify -q //...