Отслеживание создания/редактирования файлов

Иногда бывает полезным отслеживать временные файлы, например файлы выгрузки Битрикса, которые в процессе обмена создаются и удаляются. Чтобы получить «копию» таких временных файлов, без погружения в дебри кода, возможно сделать сторожевую собаку watchdog, которая при появлении файла будет копировать его в отдельный каталог.

Использование:

./watchdog.sh watch_dir cp_dir

Если каталог watch_dir будет удален, а затем создан заново, watchdog это не отследит, и «проспит»

Для работы понадобится пакет inotify-tools:

yum install inotify-tools

Сам скрипт:

watchdog.sh
#!/bin/bash
 
if [ $# == 0 ]; then
  echo 'Usage: watchdog.sh watch_dir cp_dir'
  exit 1
fi
 
WATCH_DIR=$1
CP_DIR=$2
 
inotifywait -mqr --timefmt '%T' --format '%f %T' -e modify --exclude '^\..*\.sw[px]*$' $WATCH_DIR | while read file date; do
 
  if [[ "$file" =~ \. ]]; then
    printf '\033[33m%*s\033[0m\n' `tput cols` ' ' | tr ' ' '-'
    echo -e "\033[32m$date\033[0m"
    echo $file
    cp $WATCH_DIR/$file $CP_DIR
  fi
done