Мониторинг измнений файлов в директории и создание зеркала директории в Linux
				
				
							
					Задача — есть директория в которой добавляются или удаляются файлы. Директория без лишней вложенности. Необходимо в Linux отследить добавление или удаление файлов в директории и скопировать новые / удалить старые в зеркале директории. Это мне нужно было для синхронизации по WebDAV с Alfresco (rsync тут использовать не получится).
Приготовимся прострелить себе ногу:
incron — отслеживает изменения в файловой системе и выполняет какие-либо действия.
Создаем /etc/incron.d/dirs-sync с вот таким содержанием:
Таким образом мы передаем скрипту /etc/script.sh в качестве параметров имя файла и флаг события. Сам скрипт:
Перезапускаем сервис:
В /var/log/mesages можем наблюдать за происходящим:
Почитать
				
								
				
			
			Приготовимся прострелить себе ногу:
apt-get install incronincron — отслеживает изменения в файловой системе и выполняет какие-либо действия.
Создаем /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
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.