Недостаточно быстро сообщать

Я запускаю следующий скрипт для мониторинга создания новых файлов, но он не достаточно быстрый. Если два файла добавляются одновременно, то этот скрипт выполняет действия только с первым.

Есть ли способ настроить это, чтобы работать быстрее или по-другому?

#!/bin/sh

WATCHED_DIR=/var/www/magento/media/catalog/product
UPLOAD_DIR=/cloudfiles/magento/media/catalog/product

while :
do
  echo 'Watching directory: '$WATCHED_DIR 'for new files'
  while file=$(inotifywait -q -e create -r "$WATCHED_DIR" --format "%w%f")
  do
    loc=$file
    rem=$UPLOAD_DIR${file#$WATCHED_DIR}

    rsync --ignore-existing --inplace -q $loc $rem &
  done
done

1 ответ

Решение

Я предлагаю использовать -m, --monitor возможность inotifywait, следующим образом:

#!/bin/sh                               

WATCHED_DIR="/var/www/magento/media/catalog/product"
UPLOAD_DIR="/cloudfiles/magento/media/catalog/product"    

echo "Watching directory: $WATCHED_DIR for new files"
inotifywait -m -q -e create -r "$WATCHED_DIR" --format "%w%f" |
  while read file
  do
    loc="$file"
    rem="$UPLOAD_DIR${file#$WATCHED_DIR}"

    rsync --ignore-existing --inplace -q "$loc" "$rem" &
  done

Я также добавил некоторые кавычки в переменные, чтобы учесть возможность имен файлов с пробелами.

Другие вопросы по тегам