10

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

也就是说,我想将B用作任何文件的大容器,包括我曾经从A同步并删除的那个。我认为被认为是一种“单向同步”。

4

5 回答 5

12

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

  • 将文件夹 A 镜像到 B 和
  • 保存 B 上的数据

镜像

根据 Unison手册,该-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。使用图形 UI 更方便,因为您可以看到所有待处理的更改,包括 Unison 建议的默认操作。

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

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

于 2019-02-17T11:21:14.053 回答
1

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

阅读手册中的完整说明。

于 2017-12-22T22:12:11.953 回答
0

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

unison /source/dir /destination/dir -force /source/dir

这将确保无论对目标进行什么更改,目标都将与源匹配。

顺便说一句,unisonrsync当您在数百万个文件中散布大量数据而其中只有少数文件发生变化时要快得多。

于 2018-06-14T11:29:19.523 回答
0

我会说:

source=A
target=B
unison $source $target -batch -nocreation $source -noupdate $source -force $source
于 2018-12-26T11:53:13.707 回答
-4

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

于 2017-08-23T22:07:22.793 回答