Bai*_*ang 5 linux rsync file-transfer
我的应用程序使用 rsync 将文件从网络驱动程序复制到本地作为缓存以提高性能。
但由于我的应用程序可能是并行运行的,因此 rsync 也是如此,并且可能存在 2 个rsync实例针对同一源和目录并行运行的情况。
我遇到了一个问题,即目标位置未完全同步(将一个子目录留空)。所以我怀疑这是rsync的问题,所以
我正在使用的选项是:
rsync -a --copy-unsafe-links --delete
Run Code Online (Sandbox Code Playgroud)
并行运行 rsyn 可能是安全的,但效率不高,因为文件很可能会被传输两次,因为 rsync 在开始时构成了要传输的文件列表。当然,两个 rsync 同时传输同一个文件的可能性总是很小,但之后的内容应该是相同的。
为了防止双重运行,通常我会编写一个脚本来检查,否则touch会在最后删除一个锁定文件。作为一个选项,如果中断脚本或发生错误,您可以在脚本中使用陷阱来清理锁定文件(在 shell 中使用“help trap”)。据我所知,rsync本身没有这样的锁定机制(这很难实现)。