Làm cách nào tôi có thể sửa đổi tập lệnh inotifywait này để tải lên bất kỳ tệp nào từ bất kỳ thư mục nào?


1

Làm cách nào tôi có thể sửa đổi tập lệnh inotifywait này để tải lên bất kỳ tệp nào từ bất kỳ thư mục nào?

Tôi đang làm việc trên một inotifywaittập lệnh dựa trên để kiểm tra việc tạo tệp và thay đổi đệ quy trong một thư mục và sau đó tải các tệp đã sửa đổi lên Dropbox bằng cách sử dụng dropbox-uploader.sh(xin lưu ý trong môi trường này, ứng dụng Dropbox bình thường không hoạt động, đó là lý do tại sao tôi sử dụng tập lệnh thay thế) .

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

Vấn đề là kịch bản sẽ chỉ tải lên các tệp trong thư mục ( name-of-folder) ở trên, nhưng nó sẽ không tải lên các tệp đã thay đổi trong các thư mục con.

Có ai biết sửa nó không?

Câu trả lời:


1
  • --format '%f'là không đủ, nó chỉ cung cấp tên tệp (như basename). Sử dụng --format '%w%f'để có được đường dẫn đầy đủ (er).
  • Nếu bạn đưa ra ~/Dropbox-Uploader/name-of-folderlàm đối số inotifywaitthì các đường dẫn này sẽ bắt đầu ~/Dropbox-Uploader/name-of-folder/và điều này sẽ khiến cho việc dropbox_uploader.shgọi của bạn hơi khó khăn khi bạn chỉ định (tôi đoán) đường dẫn đích. Hãy xem xét cd, sau đó ./như là một đối số để inotifywait.
  • Trích dẫn các biến (ví dụ "/name-of-folder/$FILE"), nếu không, một khoảng trắng trong bất kỳ đường dẫn nào sẽ làm bạn ngạc nhiên.

Tôi không sử dụng Dropbox vì vậy tôi thực sự không thể gỡ lỗi này.

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.