当前位置: 首页 > news >正文

SVN通过备份、过滤、再导入的方式彻底删除废弃目录

文章目录

  • 前言
  • 简要步骤
  • 操作示例
  • 总结

前言

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,后面我就没试了,磁盘快满了。

总结

  • 备份 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
==>> 反爬链接,请勿点击,原地爆炸,概不负责!<<==

朝气蓬勃的孩子真的可爱,可是我还是想长大,这样才有机会掌控节奏,虽然现在看起来像个提线木偶,但正在尝试突破束缚~

http://www.lryc.cn/news/61767.html

相关文章:

  • golang支持优雅关闭和core错误记录
  • Basics of Container Isolation 容器隔离的实现原理
  • EBS R12.1 注册客户化应用的步骤
  • 算法记录 | Day38 动态规划
  • PMP项目管理-[第六章]进度管理
  • Python变量
  • 准备换工作的看过来~
  • 免费AI人工智能在线写作伪原创-百度ai自动写文章
  • 互联网摸鱼日报(2023-04-21)
  • 5.3、web服务器简介HTTP协议
  • 【观察】华为:新一代楼宇网络,使能绿建智慧化
  • 【C# .NET】chapter 13 使用多任务改进性能和可扩展性
  • CA(证书颁发机构)
  • 辛弃疾最有代表性的十首词
  • MC9S12G128开发板—实现按键发送CAN报文指示小车移动功能
  • 尚融宝22-提交借款申请
  • 机器学习在生态、环境经济学中的实践技术应用及论文写作
  • Android硬件通信之 WIFI通信
  • 面试官:“请描述一下Android系统的启动流程”
  • k8s delete node 后 重启kubelet会自己加入到集群 ?
  • REXROTH液压方向阀安装须知
  • 【数据结构实验】哈夫曼树
  • 浏览器不好用?插件来帮忙
  • Qt Quick - 容器控件综述
  • 面试题30天打卡-day06
  • Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理
  • 项目管理中的必不可少的强大工具有哪些?
  • 嵌入式学习笔记——SPI通信的应用
  • .Net下企业应用系统架构构建心得
  • 【社区图书馆】关于Mybatis原理学习的读后感