svn仓库里的db/revprops/里面存的是svn的操作日志,以版本号的形式存放的单个文件。
svn仓库里的db/revs/里面存的是svn的数据日志,也是以版本号的形式存放的单个文件。
今天准备批量修改操作日志的时候,由于没停服,备份恢复的时候,在时间段内还有操作,导致有一个日志文件丢失。技术人员反映某个目录svn无法查看log,只能提交,不能下载更新。
尝试了许多网上的方案,最后还是伪造日志文件最为方便。
例如丢失的日志文件为:
/data0/svn/dev3/db/revprops/76/76897
直接copy一个旁边的文件。
cp 76898 76897
理论上直接就能用。不过里面的内容还是需要修改成正确的
vim 76897
*K 10 svn:author V 6 yangli K 8 svn:date V 27 2019-10-09T04:06:03.691254Z K 7 svn:log V 5 76897 END*
注意上面的数字,10,6,8,27,5分别是下面字符串的长度。这个一定要保持一致,否则会报错哈希没有结束符。
将时间和备注修改正确就行了。
注意:
1、尽量避免操作 SVN的日志文件以及数据文件。
2、操作SVN文件一定要停服、停服、停服。
3、操作之前一定要备份、备份、备份。
4、谨记:运维有风险,操作需谨慎。
吃一堑涨一智,感谢上天保佑没出大问题,以后倍加小心,完善方案再行动。