1

Как я могу изменить этот скрипт inotifywait для загрузки любого файла из любого каталога?

Я работаю над сценарием на основе inotifywait который должен проверять создание файлов и рекурсивные изменения в каталоге, а затем загружать измененные файлы в Dropbox с помощью dropbox-uploader.sh (обратите внимание, что в этой среде обычное приложение Dropbox не работает, поэтому Я использую сценарий вместо).

inotifywait -m -r -q -e modify,create --format '%f' ~/Dropbox-Uploader/name-of-folder |
 while read FILE; do   /home/user/Dropbox-Uploader/dropbox_uploader.sh \
 upload ~/Dropbox-Uploader/name-of-folder/$FILE /name-of-folder/$FILE; date; done

Проблема в том, что она существует, заключается в том, что скрипт будет загружать только те файлы, которые находятся в указанной выше папке (name-of-folder), но не будет загружать файлы, которые были изменены в подпапках.

Кто-нибудь знает, как это исправить?

1 ответ1

1
  • --format '%f' недостаточно, он дает только имена файлов (например, basename). Используйте --format '%w%f' чтобы получить полные (er) пути.
  • Если вы дадите ~/Dropbox-Uploader/name-of-folder в качестве аргумента для inotifywait то эти пути будут начинаться с ~/Dropbox-Uploader/name-of-folder/ и это несколько усложнит ваш вызов dropbox_uploader.sh когда вы указать (я думаю) целевой путь. Рассмотрим cd , затем ./ в качестве аргумента для inotifywait .
  • Переменные в кавычках (например, "/name-of-folder/$FILE"), в противном случае пробел в любом пути вас удивит.

Я не использую Dropbox, поэтому я не могу отладить это.

cd ~/Dropbox-Uploader/name-of-folder &&
inotifywait -m -r -q -e modify,create --format '%w%f' ./ |
 while read FILE; do /home/user/Dropbox-Uploader/dropbox_uploader.sh \
 upload "$FILE" "/name-of-folder/$FILE"; date; done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .