通过基于 CD 的增量补丁同步两个文件夹

通过基于 CD 的增量补丁同步两个文件夹

我在远程 PC 上有一个数据文件夹,每周更新一次,通过 CD 提供。

该文件夹主要是.jar二进制文件 - 可能有 200 个,总大小约为 350Mb。

每次只有一小部分数据发生变化 - 通常约为 5%。

我不想提供数据文件夹的全新版本,而是想发送增量。

Linuxdiff命令是执行此操作的最佳方法吗?它生成的补丁文件大小似乎接近 350Mb,因此它并没有带来大小节省。

我不担心发送特定文件中的更改,我很乐意发送整个替换内容。

还有其他适用的 Linux 工具可以做到这一点吗?

答案1

这听起来像是那种git bundle很有效的事情。

它可以创建一个文件,表示存储库随时间的变化,该文件可以写入 CD 以传输到远程计算机。然后可以将这些更改应用到远程位置。

例子

假设您想要将历史记录从机器 A 上的存储库 R1 传输到机器 B 上的另一个存储库 R2。无论出于何种原因,不允许 A 和 B 之间直接连接,但我们可以通过某种机制(CD 、电子邮件等)。我们希望通过在 R1 中的分支 master 上进行的开发来更新 R2。

git 捆绑文档是这里

答案2

您也许可以满足rsync --write-batch=FILE此要求,但我认为对于仅 350MB 的内容,以 CD 形式发送,可能有点过分了。 (无论您发送 150MB 还是 350MB 基本上都无关紧要;它仍然需要一张 CD。)

如果您要rsync以这种方式使用,则需要维护数据文件夹的本地副本,以便可以与传入的更改文件进行比较。更改集输出将被写入FILE远程 PC 目标,然后也可以应用到远程 PC 目标rsync --read-batch=FILE

更好的建议是使用文件修改日期/时间和大小来cp确定集合中的哪些文件已更新,并简单地从 CD 复制这些文件。

cp -u -r --preserve=timestamps /media/CD /path/to/target/folder

这里的标志-u仅更新源中较新的文件,并且两者的组合-r --preserve=timestamps确保考虑整个目录树,并且每个复制的文件都维护其时间戳。

相关内容