Задача — есть директория в которой добавляются или удаляются файлы. Директория без лишней вложенности. Необходимо в Linux отследить добавление или удаление файлов в директории и скопировать новые / удалить старые в зеркале директории. Это мне нужно было для синхронизации по
WebDAV с Alfresco (rsync тут использовать не получится).
Приготовимся прострелить себе ногу:
apt-get install incron
incron — отслеживает изменения в файловой системе и выполняет какие-либо действия.
Создаем
/etc/incron.d/dirs-sync с вот таким содержанием:
/отслеживаемая/директория/ IN_CLOSE_WRITE,IN_CREATE,IN_DELETE /etc/script.sh /отслеживаемая/директория /целевая/директория $# $%
Таким образом мы передаем скрипту
/etc/script.sh в качестве параметров отслеживаемую и целевую директории, имя файла и флаг события. Сам скрипт:
#!/bin/bash
ext=$(echo $3 | grep -o '\.[^.]*')
if [ $ext == ".doc" ]; then
if [ $4 == "IN_DELETE" ]; then
rm -f "$2/$3"
else
cp -f "$1"/$3 "$2"/$3
fi
fi
Перезапускаем сервис:
service incron restart
В
/var/log/syslog можем наблюдать за происходящим:
Aug 29 17:37:15 хост incrond[29172]: (system dirs-sync) CMD (/etc/script.sh /отслеживаемая/директория /целевая/директория test.doc IN_DELETE)
Почитать