Unison:只在一个方向上同步
Unison: sync only in one direction
如果我有文件夹 A 和 B,是否可以将新文件从 A 同步到 B 并且在 A 中删除的文件不在 B 中删除?
也就是说,我想将B用作任何文件的大容器,包括我曾经从A同步然后删除的文件。我觉得算是"one way syncing".
是的,不要使用齐奏。只需使用 rsync
。如果你喜欢花哨的,你可以使用 cron
来安排 rsync
获得 运行 的时间,或者使用 inotify-tools
来观察文件夹 A 中的变化并准确同步变化发生。
是的,您可能想使用 noupdate
and/or nodeletion
选项:
-nodeletion xxx prevent file deletions on one replica
-noupdate xxx prevent file updates and deletions on one replica
阅读 manual 中的完整说明。
如果其他人来这里寻找有关如何使用 unison 执行此操作的实际答案,您只需使用 -force
标志和源目录,例如
unison /source/dir /destination/dir -force /source/dir
这将确保无论对目标进行什么更改,目标都将与源匹配。
顺便说一句,当您的大量数据分布在数百万个文件中而只有少数文件发生变化时,unison
比 rsync
快得多。
我会说:
source=A
target=B
unison $source $target -batch -nocreation $source -noupdate $source -force $source
我了解到您对 Unison 有这两个要求
- 将文件夹 A 镜像到 B 并且
- 在 B 上保存数据
镜像
根据 Unison manual,-force xxx
选项 "effectively changes Unison from a synchronizer into a mirroring utility"。 force
选项将要收藏的文件夹作为参数。 Unison 将解决所有有利于此文件夹的更改。
要镜像的命令行,例如,文件夹 /src/dir
到 /dest/dir
将是
unison /src/dir /dest/dir -force /src/dir
保存
使用选项 -nodeletion xxx
以防止 Unison 建议对文件夹 xxx
进行任何删除操作作为默认操作。
从 /src/dir
中删除文件后在 /dest/dir
上保留文件的命令行是
unison /src/dir /dest/dir -nodeletion /dest/dir
总结
总的来说,你想要 运行 统一这两个选项来满足你的要求:
unison /src/dir /dest/dir -force /src/dir -nodeletion /dest/dir
备注
在您以批处理模式将 Unison 设置为 运行 之前,我建议使用图形 UI 在交互模式下将 Unison 设置为 运行。使用图形 UI 更方便,因为您会看到所有未决的更改,包括 Unison 建议的默认操作。
当您对默认操作感到满意时,您可以使用文本 UI 在批处理模式(选项 -batch
)中 运行 齐奏。在批处理模式下,将接受具有默认操作的更改,将跳过没有默认操作(由于冲突)的更改。
请记住,用户可以在交互模式下覆盖这些选项。它们绝不是防止删除的绝对保护,它们只是为 Unison 提供有关如何决定默认操作的指导。在交互模式下,用户始终可以覆盖默认操作,即按“<”将更改传播到源文件夹(您不想要的方向)。
如果我有文件夹 A 和 B,是否可以将新文件从 A 同步到 B 并且在 A 中删除的文件不在 B 中删除?
也就是说,我想将B用作任何文件的大容器,包括我曾经从A同步然后删除的文件。我觉得算是"one way syncing".
是的,不要使用齐奏。只需使用 rsync
。如果你喜欢花哨的,你可以使用 cron
来安排 rsync
获得 运行 的时间,或者使用 inotify-tools
来观察文件夹 A 中的变化并准确同步变化发生。
是的,您可能想使用 noupdate
and/or nodeletion
选项:
-nodeletion xxx prevent file deletions on one replica
-noupdate xxx prevent file updates and deletions on one replica
阅读 manual 中的完整说明。
如果其他人来这里寻找有关如何使用 unison 执行此操作的实际答案,您只需使用 -force
标志和源目录,例如
unison /source/dir /destination/dir -force /source/dir
这将确保无论对目标进行什么更改,目标都将与源匹配。
顺便说一句,当您的大量数据分布在数百万个文件中而只有少数文件发生变化时,unison
比 rsync
快得多。
我会说:
source=A
target=B
unison $source $target -batch -nocreation $source -noupdate $source -force $source
我了解到您对 Unison 有这两个要求
- 将文件夹 A 镜像到 B 并且
- 在 B 上保存数据
镜像
根据 Unison manual,-force xxx
选项 "effectively changes Unison from a synchronizer into a mirroring utility"。 force
选项将要收藏的文件夹作为参数。 Unison 将解决所有有利于此文件夹的更改。
要镜像的命令行,例如,文件夹 /src/dir
到 /dest/dir
将是
unison /src/dir /dest/dir -force /src/dir
保存
使用选项 -nodeletion xxx
以防止 Unison 建议对文件夹 xxx
进行任何删除操作作为默认操作。
从 /src/dir
中删除文件后在 /dest/dir
上保留文件的命令行是
unison /src/dir /dest/dir -nodeletion /dest/dir
总结
总的来说,你想要 运行 统一这两个选项来满足你的要求:
unison /src/dir /dest/dir -force /src/dir -nodeletion /dest/dir
备注
在您以批处理模式将 Unison 设置为 运行 之前,我建议使用图形 UI 在交互模式下将 Unison 设置为 运行。使用图形 UI 更方便,因为您会看到所有未决的更改,包括 Unison 建议的默认操作。
当您对默认操作感到满意时,您可以使用文本 UI 在批处理模式(选项 -batch
)中 运行 齐奏。在批处理模式下,将接受具有默认操作的更改,将跳过没有默认操作(由于冲突)的更改。
请记住,用户可以在交互模式下覆盖这些选项。它们绝不是防止删除的绝对保护,它们只是为 Unison 提供有关如何决定默认操作的指导。在交互模式下,用户始终可以覆盖默认操作,即按“<”将更改传播到源文件夹(您不想要的方向)。