मैं किसी भी फ़ाइल को किसी भी निर्देशिका से अपलोड करने के लिए इस inotifywait स्क्रिप्ट को कैसे संशोधित कर सकता हूं?


1

मैं किसी भी फ़ाइल को किसी भी निर्देशिका से अपलोड करने के लिए इस inotifywait स्क्रिप्ट को कैसे संशोधित कर सकता हूं?

मैं एक पर काम कर रहा हूँ inotifywait आधारित स्क्रिप्ट जो फ़ाइल निर्माण के लिए जाँच करनी चाहिए और एक निर्देशिका में पुनरावर्ती रूप से बदलती है और फिर संशोधित फ़ाइलों को ड्रॉपबॉक्स का उपयोग करके अपलोड करें dropbox-uploader.sh (कृपया ध्यान दें कि इस वातावरण में सामान्य ड्रॉपबॉक्स ऐप काम नहीं कर रहा है, यही कारण है कि मैं इसके बजाय स्क्रिप्ट का उपयोग करता हूं)।

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" ), अन्यथा किसी भी मार्ग में एक स्थान आपको आश्चर्यचकित करेगा।

मैं ड्रॉपबॉक्स का उपयोग नहीं करता, इसलिए मैं वास्तव में इस पर डिबग नहीं कर सकता।

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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.