我们的商店经常用完磁盘空间,因为开发人员和管理层要求我们保留所有夜间构建,因为它极大地有助于调试。
每个构建通常都有很少的变化。但是,几乎每个文件都因构建而异,因为编译器和链接器会在对象和可执行文件中插入日期/时间戳(和版本)。
所以问题是:有没有人知道一个文件系统不仅可以“合并重复文件”,还可以“合并相似文件”,因为这些文件是几 KB 到 MB,但每个文件只有几个字节发生了变化?(即使更改了代码,对可执行文件的影响通常也很小,除非更改了主要的头文件或库等)
我们的商店经常用完磁盘空间,因为开发人员和管理层要求我们保留所有夜间构建,因为它极大地有助于调试。
每个构建通常都有很少的变化。但是,几乎每个文件都因构建而异,因为编译器和链接器会在对象和可执行文件中插入日期/时间戳(和版本)。
所以问题是:有没有人知道一个文件系统不仅可以“合并重复文件”,还可以“合并相似文件”,因为这些文件是几 KB 到 MB,但每个文件只有几个字节发生了变化?(即使更改了代码,对可执行文件的影响通常也很小,除非更改了主要的头文件或库等)
为什么不是传统的版本控制系统?
您开始您的第一个构建,然后在此之上连续提交彼此构建。如果文件是重复的,则不会创建增量。如果它有修改,它将只存储更改。
这不是你要求的吗?
一般来说,我对这类主题的看法是“不要试图编写代码来摆脱糟糕的管理决策”。
如果他们想保留那么多旧的构建文件,“人手”并购买空间(磁盘空间很便宜)。
如果他们不想购买磁盘,请“行动起来”并选择合理数量的构建,以使其适合可用空间。
真的不是那么难的问题。
如果驱动器可用,我会走这条路的最远的地方是在驱动器上启用“磁盘压缩”,因为这是由操作系统处理的,不需要额外的应用程序和随之而来的支持。当然,这是一个小的性能影响 - 但它很简单。
把“发展”的精力留给重要的事情。:-)
这是一个穷人的解决方案,但如果构建存储是一项重大的财务决策,那么我认为这个答案是有道理的。:)
首先,您不太可能找到一个全新的存储/源代码控制系统来执行这种类型的复杂文件引用,其成本低于您购买新存储的费用。
在昂贵的存储(即 RAID)上保留过去 2 个月的构建价值如何,然后为自己获取一些用于存档的廉价存储(即其他人提到的 1TB USB 驱动器)。
编写一个简单的小控制台应用程序,该应用程序每晚作为计划任务运行,并将 < 2 个月前的所有文件移动到存档驱动器。
Opensolaris 和 ZFS。
我认为 cramfs 可以做到这一点,但创建 cramfs 图像(只读)可能会让人头疼。
嗯.. 为什么需要归档构建?从以前的源代码控制版本重新创建构建不应该是微不足道的吗?
您很可能需要具有透明压缩的文件系统或卷管理器。性能自然会受到损害,但如果您使用轻压缩,它应该不是太大的问题。
对于安装和维护新文件管理方案的一小部分工作,我会购买更多的硬盘驱动器。昨晚我在 Frys,他们以 100 美元的价格出售 1 TB 外置硬盘;它是一个 USB 驱动器,您只需将其插入即可。如果它已满,请再购买一个。作为开发人员,如果您的商店真的想无限期地保留构建,我会感到惊讶——我怀疑夜间构建的价值在几个月后会很低。
这不是一个优雅的解决方案,但它可能更具成本效益。
我认为你应该使用一个应用程序来删除重复文件,这对你来说是一个更好的解决方案,我使用一个名为重复查找器 2009 的软件来删除重复文件。