Unison:仅在一个方向同步
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unison:仅在一个方向同步相关的知识,希望对你有一定的参考价值。
如果我有文件夹A和B,是否可以将新文件从A同步到B并且不能擦除A中删除的B文件?
也就是说,我想使用B作为任何文件的大容器,包括我曾经从A同步而不是擦除的文件。我认为被认为是“单向同步”。
我知道你对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。在批处理模式下,将接受使用默认操作的更改,将跳过没有默认操作的更改(由于冲突)。
请记住,用户可以在交互模式下覆盖这些选项。它们绝不是对删除的绝对保护,它们只是向Unison提供有关如何确定默认操作的指导。在交互模式下,用户始终可以覆盖默认操作,即按“<”将更改传播到源文件夹(您不想要的方向)。
是的,您可能想使用noupdate
和/或nodeletion
选项:
-nodeletion xxx prevent file deletions on one replica
-noupdate xxx prevent file updates and deletions on one replica
阅读manual中的完整描述。
我会说:
source=A
target=B
unison $source $target -batch -nocreation $source -noupdate $source -force $source
如果有其他人来这里寻找关于如何使用unison执行此操作的实际答案,您只需使用-force
标志,然后使用源目录,例如:
unison -force /source/dir /destination/dir
这将确保目标将与源匹配,无论对目标进行了哪些更改。
顺便说一句,unison
比rsync
快得多,因为只有少数几个文件发生变化时,你有大量的数据传播到数百万个文件中。
是的,不要一致使用。只需使用rsync
。如果您想获得想象,可以使用cron
来安排whenrsync
运行,或使用inotify-tools
来监视文件夹A中的更改并在发生更改时准确同步。
以上是关于Unison:仅在一个方向同步的主要内容,如果未能解决你的问题,请参考以下文章