Incron для копирования новых файлов
У меня CentOS 7 с установленным и работающим incrond.
Как я понимаю, служба incrond может отслеживать / var / www / html / uploads /, и если вы загружаете новый файл, то с помощью IN_CREATE мы можем что-то сделать. В моем случае я хотел бы скопировать этот новый файл в каталог /var/www/html/uploads/new/
Но когда я пытаюсь использовать работу Incron
/var/www/html/uploads/ IN_CREATE cp /var/www/html/uploads/new/
У меня нет результата.
Я предполагаю, что мой необработанный пример неверен, но я не могу понять, как использовать INCRON для копирования новых файлов из каталога мониторинга в другое место.
Спасибо за любые советы и идеи, чтобы попробовать.
2 ответа
Синтаксис записи incron:
<path> <mask> <command>
Если вы отслеживаете каталог, то $@ содержит путь к каталогу и $# файл, который вызвал событие, но если вы отслеживаете файл, то вы должны использовать $@$#, который содержит полный путь.
В вашем случае запись должна выглядеть так:
/var/www/html/uploads/ IN_CREATE cp $@$# /var/www/html/uploads/new/
Я нашел намного лучшее решение для Stackexchange, используя INOTIFY.
Первый
yum install inotify-tools
Затем создайте скрипт bash, скажем, dirmonit.sh как
inotifywait -m /var/www/html/uploads/ -e create -e moved_to |
while read path action file; do
echo "The file '$file' appeared in directory '$path' via '$action'"
# do something with the file
cp /var/www/html/uploads/$file /var/www/html/uploads/new/$file
done
и начать на фоне оболочки
nohup sh /scripts/dirmonit.sh &