Как синхронизировать файлы и папки в Linux при их изменении

Бывает что вам в Linux нужно отслеживать изменения в какой-то папке и в случае если там появился новый файл или изменился какой-то файл, или его удалили – нужно эти же изменения произвести в другой директории. В этой записи рассказано как это сделать.

1. Установить inotify tools

inotify tools – это набор утилит для работы с inotify (inode notify) – программы отслеживающей действия с inode в файловой системе.

sudo apt-get install inotify-tools

Больше информации об этом можно найти тут: https://github.com/rvoicilas/inotify-tools/wiki

2. Установка rsync

Rsync нужен для выполнения синхронизации файлов и директорий.

sudo apt-get install ssh rsync

3. Создадим скрипт на bash и назовем его sync.sh

nano sync.sh

4. Пишем код скрипта.

#!/bin/sh
while inotifywait -r -e modify,create,delete,move /home/mirvir/rsync-test/source_folder; do
rsync -avz /home/mirvir/rsync-test/source_folder /home/mirvir/rsync-test/destination_folder --delete
done

Выделенные участки кода – нужно изменить на те пути которые нужны вам.

5. Делаем скрипт исполняемым.

chown +x sync.sh

6. Запускаем скрипт.

./sync.sh

Ну и конечно вы можете добавить скрипт в автозапуск различными путями доступными в вашем дистрибутиве от добавления в cron до запуска из .bashrc

Добавить комментарий