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 &
Другие вопросы по тегам