与 inoify watch 一致:它如何处理对同一文件的频繁更改?

与 inoify watch 一致:它如何处理对同一文件的频繁更改?

假设我有一个相对较大的文件通过 unison 同步。并且该文件在一段时间内的更改频率比 unison 能够同步的频率要高。它会压缩后续更改还是尝试排队并发送每个版本?是否可以为单个文件或全局配置后续同步之间的最小时间跨度,即:将所有更改排队一段时间并触发操作以压缩跨度内所做的所有后续更改?

答案1

据我所知,Unison 不会将要同步的给定文件的多个版本排入队列。相反,它会运行如下操作:

  1. Unison 运行后会遍历所有本地和远程文件并建立一个已更改文件的列表。

  2. 然后 Unison 运行该列表并逐个同步每个文件。

因此,单个文件的多个版本不会排队。当 Unison 识别出文件自上次同步以来已发生更改后,它只会在步骤 2 中读取文件时同步磁盘上发生的任何版本。如果文件在步骤 1 中添加到列表和在步骤 2 中同步之间更改了十次,Unison 不知道,只会看到最后一个版本。它真的没有必要考虑中间版本。

现在,如果文件确实更新得如此频繁,那么它就有可能更新尽管Unison 正在同步它,这将返回错误。类似

Failed to fingerprint file "foo.bar": the file keeps on changing

或者有时类似于File changed during sync ...,它就会跳过该文件。

相关内容