前言
SVN占用的空间随着项目版本迭代越来越大,因为保存了历史记录中的各个版本,所以即使本地把废弃的目录删掉提交,也不会释放出多余的空间,大概率因为操作删除增加了一个版本号,使得占用的空间更大了。
怎么才能让它的空间变小的,最简单粗暴的方式就是丢弃历史记录,在最新的版本中剔除的废弃的目录直接上传创建一个新的仓库,这样操作后所有的人需要重新下载才行,如果想保留历史记录,就要用到今天说的这种备份、过滤、再导入的方式了。
简要步骤
假设svn库A在服务器上的路径是:/data/svndata/repos/A
,需要删除的文件路径为 /arts/tmp/pictures
,注意要过滤的文件夹路径以 /
开头,其实代指起始目录 A
。
操作的步骤如下:
//1.备份
svnadmin dump /data/svndata/repos/A > A.dump
//2.过滤掉废弃目录
cat A.dump | svndumpfilter exclude /arts/tmp/pictures > B.dump
//3.创建新的库
svnadmin create /data/svndata/repos/B
//4.导入新库
svnadmin load /data/svndata/repos/B < B.dump
//5.重命名老库
mv A A_backup
//6.重命名新库代替老库
mv B A
操作示例
操作过程使用的是一个真实的SVN仓库,就是按照上面的步骤试了一次,主要想看下是不是传说中的那么耗时,仓库名为R,数据量115G,共10843个版本。
-
导出备份文件
# svnadmin dump/data/svndata/repos/R > r.dump * Dumped revision 0. * Dumped revision 1. * Dumped revision 2. ...
完整导出用了2小时40分钟,导出文件大小为514G,数据量翻了近5倍。
-
过滤掉指定目录
# cat r.dump | svndumpfilter exclude /arts/tmp/pictures > r-exclude.dump Excluding prefixes: '/arts/tmp/pictures' Revision 0 committed as 0. Revision 1 committed as 1. Revision 2 committed as 2. Revision 3 committed as 3. Revision 4 committed as 4. ...
将/arts/tmp/pictures目录过滤掉,总共用时58分钟,过滤后的备份文件大小442G
-
创建新的临时仓库
# svnadmin create r-new
-
将过滤后的备份文件导入新库
# svnadmin load ./r-new < r-exclude.dump <<< Started new transaction, based on original revision 1 * editing path : arts ... done. * editing path : develop ... done. ------- Committed revision 1 >>> <<< Started new transaction, based on original revision 2 * editing path : develop/client ... done. * editing path : develop/server ... done. ------- Committed revision 2 >>> ...
导入工作从第一个版本依次应用,总共用时4小时。
这个过程真的是很慢,完整用时近8小时,并且对磁盘空间要求很大,另外还有个接近1万个版本号大小为800G的库,在24核机器上仅导出就花了41小时,备份文件大小4.5T,后面我就没试了,磁盘快满了。文章来源:https://www.toymoban.com/news/detail-420975.html
总结
- 备份
svnadmin dump /data/svndata/repos/A > A.dump
- 过滤
cat A.dump | svndumpfilter exclude /arts/tmp/pictures > B.dump
- 建新
svnadmin create /data/svndata/repos/B
- 导入
svnadmin load /data/svndata/repos/B < B.dump
朝气蓬勃的孩子真的可爱,可是我还是想长大,这样才有机会掌控节奏,虽然现在看起来像个提线木偶,但正在尝试突破束缚~文章来源地址https://www.toymoban.com/news/detail-420975.html
到了这里,关于SVN通过备份、过滤、再导入的方式彻底删除废弃目录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!