Unison:仅在一个方向同步

问题描述 投票:2回答:5

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

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

synchronization unison
5个回答
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。在批处理模式下,将接受使用默认操作的更改,将跳过没有默认操作的更改(由于冲突)。

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


0
投票

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

阅读manual中的完整描述。


0
投票

我会说:

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

-1
投票

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

unison -force /source/dir /destination/dir

这将确保目标将与源匹配,无论对目标进行了哪些更改。

顺便说一句,unisonrsync快得多,因为只有少数几个文件发生变化时,你有大量的数据传播到数百万个文件中。


-2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.