Мониторинг измнений файлов в директории и создание зеркала директории в Linux

Задача — есть директория в которой добавляются или удаляются файлы. Директория без лишней вложенности. Необходимо в Linux отследить добавление или удаление файлов в директории и скопировать новые / удалить старые в зеркале директории. Это мне нужно было для синхронизации по WebDAV с Alfresco (rsync тут использовать не получится).

Приготовимся прострелить себе ногу:

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


Почитать
  • +3
  • 29 августа 2010, 23:34
  • Sergei_T

Комментарии (1)

RSS свернуть / развернуть
+
0
incron — мощный инструмент, недооцененный пока еще многими админами. Читал про него и давно хотел поэкспериментировать. Если хорошо настроить такой демон — идея антивируса превращается в детский лепет на лужайке.
avatar

yababay

  • 30 августа 2010, 01:12

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.