unison with inoify watch: how does it deal with frequent changes to the same file(s)?

Supposing I have one relatively large file synced by unison. И файл меняется в течение некоторого времени чаще, чем unison может его синхронизировать. Сдавливает ли он последующие изменения или пытается поставить в очередь и отправить каждую версию? Is it possible to configure a minimum time span between subsequent syncs for a single file or globally i.e.: queue all changes for some time and trigger an action squashing all subsequent changes made during the span?

1
задан 27 July 2017 в 16:24
1 ответ

Насколько мне известно, Unison не ставит в очередь для синхронизации более одной версии данного файла. Вместо этого он выполняет что-то вроде этого:

  1. Unison запускается, и он просматривает все ваши локальные и удаленные файлы и составляет список тех, которые были изменены.

  2. Затем Unison просматривает этот список и синхронизирует каждый файл по одному в один раз.

Таким образом, не существует очереди нескольких версий одного файла. После того, как Unison распознает, что файл был изменен с момента последней синхронизации, он просто синхронизирует ту версию, которая есть на диске при чтении файла на шаге 2. Если файл был изменен десять раз между его добавлением в список на шаге 1 и синхронизацией. на шаге 2 Unison не знает и увидит только последнюю версию. На самом деле нет необходимости рассматривать промежуточные версии.

Теперь, если файл обновляется так часто, то есть вероятность, что он обновит , пока Unison синхронизирует его, что вернет ошибку . Что-то вроде

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

или иногда что-то вроде Файл изменен во время синхронизации ... , и он просто пропустит этот файл.

1
ответ дан 3 December 2019 в 23:27