Назад | Перейти на главную страницу

unison with inoify watch: как он справляется с частыми изменениями одного и того же файла (ов)?

Предположим, у меня есть один относительно большой файл, синхронизируемый в унисон. И файл меняется в течение некоторого времени чаще, чем unison может его синхронизировать. Сдавливает ли он последующие изменения или пытается поставить в очередь и отправить каждую версию? Можно ли настроить минимальный промежуток времени между последующими синхронизациями для одного файла или глобально, например: поставить в очередь все изменения в течение некоторого времени и инициировать действие, подавляющее все последующие изменения, сделанные в течение периода?

Насколько мне известно, 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 ..., и он просто пропустит этот файл.