Unison:仅在一个方向同步

时间:2017-08-23 19:54:23

标签: synchronization unison

如果我有文件夹A和B,是否可以将新文件从A同步到B并且不能擦除A中删除的B文件?

也就是说,我想将B用作任何文件的大容器,包括我曾经从A同步过的文件,而不是擦除文件。我认为被认为是“单向同步”。

5 个答案:

答案 0 :(得分:2)

我了解您对Unison有这两个要求

  • 将文件夹A镜像到B并
  • 在B上保存数据

镜像

根据Unison manual-force xxx选项“有效地将Unison从同步器更改为镜像实用程序”。 force选项将首选使用的文件夹作为参数。 Unison将解决所有更改,以支持此文件夹。

用于将文件夹/src/dir镜像到/dest/dir的命令行为

unison /src/dir /dest/dir -force /src/dir

保存

使用选项-nodeletion xxx阻止Unison建议删除文件夹xxx上的任何操作作为默认操作。

/dest/dir删除文件后,保留/src/dir上文件的命令行将是

unison /src/dir /dest/dir -nodeletion /dest/dir

总结

因此,总的来说,您希望使用这两个选项来运行Unison以满足您的要求:

unison /src/dir /dest/dir -force /src/dir -nodeletion /dest/dir

注释

在将Unison设置为以批处理模式运行之前,建议您使用图形UI在交互模式下运行Unison。当您看到所有待处理的更改(包括Unison建议的默认操作)时,使用图形UI会更加方便。

当您对默认操作感到满意时,可以使用文本UI以批处理模式(选项-batch)统一运行。在批处理模式下,将接受具有默认操作的更改,而将跳过没有默认操作的更改(由于冲突)。

请记住,用户可以在交互模式下覆盖这些选项。它们绝不是绝对的删除保护,它们只是向Unison提供有关如何决定默认操作的指导。在交互模式下,用户始终可以覆盖默认操作,即,按“ <”将更改传播到源文件夹(不需要的方向)。

答案 1 :(得分:0)

是的,您可能希望使用noupdate和/或nodeletion选项: -nodeletion xxx prevent file deletions on one replica -noupdate xxx prevent file updates and deletions on one replica

阅读manual

中的完整说明

答案 2 :(得分:0)

我会说:

source=A
target=B
unison $source $target -batch -nocreation $source -noupdate $source -force $source

答案 3 :(得分:-1)

如果其他人来到这里寻找关于如何使用unison执行此操作的实际答案,您只需使用-force标志,然后使用源目录,例如。

unison -force /source/dir /destination/dir

无论对目的地做出哪些更改,这都将确保目的地与源匹配。

BTW,unisonrsync快得多,因为只有少数几个文件发生变化时,数据量非常大。

答案 4 :(得分:-2)

是的,不要一致使用。只需使用rsync即可。如果您想获得幻想,可以使用cron来安排rsync运行的时间,或使用inotify-tools来监视文件夹A中的更改并在发生更改时准确同步。