同步多个文件部分更改的文件夹

同步多个文件部分更改的文件夹

我在远程计算机上有以下目录结构

 ALLLibs/LibA/LibA.1
 ALLLibs/LibA/LibA.2
 ALLLibs/LibB/LibB.1
 ALLLibs/LibB/LibB.4

说明 LibA.1 和 LibA.2 是一个目录的版本,这两个文件夹的内容可能几乎相同,并且可以有更多这样的文件夹。

我要同步所有库到我的另一台网络太慢的机器。并且唯一可用的选项是通过网络

我知道rsync最适合同步文件,但我相信它可以对文件进行 1-1 映射并同步它们。

我的一个用例是, ALLLibs/LibA/LibA.1如果已经在我的另一台机器上同步,然后ALLLibs/LibA/LibA.2在远程创建,我希望通过前一个库的补丁进行同步。

答案1

确保您使用 rsync-z通过网络进行压缩。其他要考虑的选项是-H(硬链接)和-S(稀疏文件)。

在运行 rsync 之前,请执行一个-nv不更新但显示哪些文件将被更新的版本。

在文件列表中,使用您的知识来匹配远程设备上可能已存在丢失文件的位置,然后登录到远程设备并首先复制这些文件。

例如,-nv可能会显示以下所需的更新:

ALLLibs/LibA/LibA.2
ALLLibs/LibA/LibA.2/file1

但如果您知道它可能是 的副本../LibA.1/file1,则编写一个脚本来创建并从 LibA.1 填充 LibA.2,然后在远程运行它。它可以像这样简单cp -rp。当你进行真正的rsync时,类似的文件已经存在,并且更改的文件将被更新。您将需要--delete删除不应该存在的文件(请小心此选项:-n首先进行测试)。

在远程复制命令时要小心:复制文件通常会在新文件上设置新的时间戳。 rsync 默认情况下会比较大小和时间戳。如果它们不同,该文件将被更新。使用 rsync 选项-c对每个文件进行校验和以查看其是否不同。

相关内容