如果我有文件夹A和B,是否可以将新文件从A同步到B并且不能擦除A中删除的B文件?
也就是说,我想将B用作任何文件的大容器,包括我曾经从A同步过的文件,而不是擦除文件。我认为被认为是“单向同步”。
答案 0 :(得分:2)
我了解您对Unison有这两个要求
镜像
根据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,unison
比rsync
快得多,因为只有少数几个文件发生变化时,数据量非常大。
答案 4 :(得分:-2)
rsync
即可。如果您想获得幻想,可以使用cron
来安排rsync
运行的时间,或使用inotify-tools
来监视文件夹A中的更改并在发生更改时准确同步。