Я могу синхронизировать папки с rsync -avz /directory /target
, теперь я хочу сделать это, если я изменил файл, /directory
поэтому rsync
должен вызываться автоматически.
Я использую Virtual Box, и общая папка Virtual Box работает очень медленно, особенно если у вас есть веб-страница, которая использует общую папку в качестве корня документа. Благодаря этому rsync
я смогу работать с локальными файлами в общей папке и автоматически синхронизировать их с корнем документа.
Я надеюсь, что у кого-то есть идея, как это сделать, crontab
было бы нехорошо, потому что оно выполняется каждые x минут, поэтому, если я ничего не буду делать, он все равно будет вызывать, rsync
но не если я изменю свой файл.
С наилучшими пожеланиями
источник
inotifywait
Решение имеет один небольшой , но существенный недостаток: он не обнаруживает изменения , которые произошли , когдаrsync
работают. Рассмотрим следующую ситуацию: файл A изменен; rsync срабатывает; когда rsync почти завершил синхронизацию файла A, файл B изменяется. Теперь онrsync
закончен иinotifywait
работает, но файл B не синхронизирован и не будет синхронизирован до следующего изменения. Попробуйте использоватьlsyncd
как предложено @Arigion.Вы можете использовать Lsyncd (Live Syncing Daemon) :
Вот, например, учебник для Ubuntu 16.04 .
источник
Вы можете использовать
inotifywait
иrsync
.inotifywait
сmodify,create,delete
включенным событием . Таким образом, вы будете синхронизироваться с вашим сервером только при изменении файла, в противном случае он будет синхронизироваться при каждом чтении файла (редакторы несколько раз читают ваш файл, чтобы проверить, есть ли какие-либо изменения). Так сказал:источник
lsyncd
как предложено @Arigion.Немного расширив комментарий к принятому ответу, я успешно использовал fswatch для вызова
scp
измененных файлов для гостя. В Linux это обертка,inotify
но кроссплатформенная (я на Mac с гостем QEMU на базе Arm). Я также занялсяssh
удаленной сборкой. Пуш-подход хорошо работает с акциями, которые ведут себя не идеально.источник