Мониторинг измнений файлов в директории и создание зеркала директории в Linux
Задача — есть директория в которой добавляются или удаляются файлы. Директория без лишней вложенности. Необходимо в Linux отследить добавление или удаление файлов в директории и скопировать новые / удалить старые в зеркале директории. Это мне нужно было для синхронизации по WebDAV с Alfresco (rsync тут использовать не получится).
Приготовимся прострелить себе ногу:
incron — отслеживает изменения в файловой системе и выполняет какие-либо действия.
Создаем /etc/incron.d/dirs-sync с вот таким содержанием:
Таким образом мы передаем скрипту /etc/script.sh в качестве параметров имя файла и флаг события. Сам скрипт:
Перезапускаем сервис:
В /var/log/mesages можем наблюдать за происходящим:
Почитать
Приготовимся прострелить себе ногу:
apt-get install incron
incron — отслеживает изменения в файловой системе и выполняет какие-либо действия.
Создаем /etc/incron.d/dirs-sync с вот таким содержанием:
/отслеживаемая/директория/ IN_CLOSE_WRITE,IN_DELETE,IN_MOVED_TO,IN_MOVED_FROM /etc/script.sh $# $%
Таким образом мы передаем скрипту /etc/script.sh в качестве параметров имя файла и флаг события. Сам скрипт:
#!/bin/bash
# Sergei_T
tmpIFS=$IFS; IFS='\n'
logger $1 $2
ext=$(echo $1 | awk -F . '{print $NF}')
if [ $ext == "doc" ]; then
if [[ $2 == "IN_DELETE" || $2 == "IN_MOVED_FROM" ]]; then
logger deleting $1
rm -v -f /целевая/директория/"$1" | logger
else
type=$(file -i /отслеживаемая/директория/"$1")
if echo "$type" | egrep -q 'office|word'
then
logger copying $1
cp -v /отслеживаемая/директория/"$1" /целевая/директория/ | logger
fi
fi
fi
IFS=$tmpIFS
Перезапускаем сервис:
service incron restart
В /var/log/mesages можем наблюдать за происходящим:
Jan 23 15:48:53 share logger: doc1.doc IN_CLOSE_WRITE
Jan 23 15:48:54 share logger: copy doc1.doc
Почитать
Комментарии (1)
RSS свернуть / развернутьyababay
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.