我如何修改此 inotifywait 脚本以从任何目录上传任何文件?

我如何修改此 inotifywait 脚本以从任何目录上传任何文件?

我如何修改此 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

  • --format '%f'还不够,它只提供文件名(如basename)。用于--format '%w%f'获取完整(更)路径。
  • 如果您将~/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

相关内容