Wie kann ich dieses inotifywait-Skript ändern, um Dateien aus einem beliebigen Verzeichnis hochzuladen?


1

Wie kann ich dieses inotifywait-Skript ändern, um Dateien aus einem beliebigen Verzeichnis hochzuladen?

Ich arbeite an einem inotifywaitBasis - Skript , das für Dateierstellung und Änderungen rekursiv in einem Verzeichnis überprüfen sollten , und dann die geänderten Dateien auf Dropbox hochladen verwenden dropbox-uploader.sh(bitte in diesem Umfeld beachten Sie die normale Dropbox app funktioniert nicht, weshalb ich das Skript stattdessen verwenden) .

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

Das derzeitige Problem besteht darin, dass das Skript nur Dateien hochlädt, die sich im name-of-folderobigen Ordner ( ) befinden, aber keine Dateien hochlädt, die sich in Unterordnern geändert haben.

Weiß jemand, wie man das behebt?

Antworten:


1
  • --format '%f'ist nicht genug, es gibt nur Dateinamen (wie basename). Verwenden Sie --format '%w%f', um vollständige (er) Pfade zu erhalten.
  • Wenn Sie ~/Dropbox-Uploader/name-of-folderals Argument angeben, inotifywaitbeginnen diese Pfade mit ~/Dropbox-Uploader/name-of-folder/und dies erschwert Ihren dropbox_uploader.shAufruf etwas, wenn Sie den Zielpfad angeben (ich denke). Betrachten Sie cddann ./als Argument dazu inotifywait.
  • Zitatvariablen (zB "/name-of-folder/$FILE"), sonst überrascht Sie ein Leerzeichen in einem Pfad.

Ich benutze keine Dropbox, daher kann ich das nicht wirklich debuggen.

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.