किसी फ़ाइल को दूसरे फ़ोल्डर में स्वचालित रूप से कॉपी करने के लिए rsync का उपयोग करें


5

मुझे गंतव्य फ़ोल्डर में स्रोत की सामग्री की प्रतिलिपि बनाने के लिए यह आदेश मिला।

rsync -r source/* destination

क्या मैं वास्तव में इस कमांड को स्वचालित रूप से चलाने के लिए हर बार एक फ़ाइल मेरे स्रोत फ़ोल्डर में जोड़ा जाता है।

क्या यह संभव है?


आप एक स्क्रिप्ट का उपयोग कर सकते हैं जो जोड़ती है rsyncऔर inotifyजैसे कि यह एक
बर्ट

जवाबों:


6

आप फ़ोल्डर देखने और स्क्रिप्ट को चलाने के लिए ऑटोमेटर और फोल्डर क्रियाओं का उपयोग कर सकते हैं।

ऑटोमेटर को लॉन्च करने और नया चुनने पर, दिए गए विकल्पों में से एक 'फोल्डर एक्शन' बनाना है। फ़ोल्डर एक्शन का चयन करने के बाद स्क्रीन के शीर्ष पर आपको 'घड़ी' के लिए एक फ़ोल्डर चुनने का विकल्प दिया जाता है।

यहाँ छवि विवरण दर्ज करें

मुझे लगता है कि आप अपने मामले में क्या करना चाहते हैं, फिर बाएं स्तंभ पर 'उपयोगिताएँ' चुनें, और फिर 'रन शैल स्क्रिप्ट' को दूसरे कॉलम से वर्कफ़्लो विंडो में खींचें।

यहाँ छवि विवरण दर्ज करें

यहां वह है जहां आप लिखेंगे कि फ़ोल्डर में परिवर्तन किए जाने पर आप जो भी स्क्रिप्ट चलाना चाहते हैं। इस स्थिति में आपकी rsync स्क्रिप्ट।

यहाँ छवि विवरण दर्ज करें


यह एक शानदार उत्तर है, जो उस लिंक के पीछे की कुछ सामग्रियों के होने से लाभ उठाएगा, जो पोस्ट में दी गई हैं।
इयान सी

अधिक विवरण जोड़ा गया।
स्टीफन कोलिन्स

3

इस प्रश्न का एक त्वरित और गंदा समाधान जो UNIX प्लेटफार्मों में पोर्टेबल है (OSX के लिए विशिष्ट नहीं है, लेकिन HP-UX, Solaris, Linux, आदि पर उपयोग किया जा सकता है) उपयोगकर्ता के crontab से rsync को कॉल करना है, और rsync का फ़ोल्डर सिंक्रनाइज़ेशन करना है। तर्क स्वयं निर्धारित करता है कि फ़ोल्डर बदला गया है या नहीं। इस पोर्टेबल समाधान का उपयोग करने के लिए एक शोधन एक छुआ फाइल (वास्तव में इसके संशोधन समय) और फ़ोल्डर के संशोधन समय के बीच एक तारीख परीक्षण के साथ rsync को लपेटने के लिए है, लेकिन यह तब तक आवश्यक नहीं है जब तक कि फ़ोल्डर्स न हों समकालिक होना बहुत बड़ा (गहरा और / या चौड़ा) है। कई सबफ़ोल्डर्स वाला एकल फ़ोल्डर इस समाधान के लिए आदर्श है।

एक मिनट के मतदान अंतराल पर "त्वरित और गंदे" मामले का प्रदर्शन करने वाले क्रॉस्टैब के लिए एक प्रविष्टि है:

# run sync every minute:
* * * * * /usr/bin/rsync -avz $HOME/source_path $HOME/target/path 1>> $HOME/.my_sync.log 2>&1

इसे त्वरित और गंदे मामले के लिए करना चाहिए - दूसरे शब्दों में, फ़ोल्डर्स को एक बदलाव करने के एक मिनट के भीतर अद्यतित रखा जाएगा। निष्पादन की स्थिति के लिए ~ / .my_sync.log फ़ाइल जांचें - यह फ़ाइल समय के साथ सीमा के बिना बढ़ेगी, इसलिए सही संचालन निर्धारित होने के बाद, कम से कम सबसे हाल के rsync स्थिति को लॉग करने के लिए ">>" से ">" बदलें।

एक अन्य सूचक यह है कि नेटवर्क पर सिंक करते समय rsync पर -z स्विच का उपयोग किया जाना चाहिए। -Z स्विच नेटवर्क फाइल ट्रांसफर के लिए उपयोग किए जाने वाले संपीड़न का कारण बनेगा। जब एक सर्वर पर स्थानीय फ़ाइल सिस्टम पर फ़ोल्डर्स के बीच सिंक करने के लिए rsync का उपयोग करते हैं, तो -z स्विच आमतौर पर छोड़ा जा सकता है।

Crontab का उपयोग करने के बारे में ध्यान दें:

यदि आप अपना कॉन्टैब इसके साथ संपादित नहीं कर सकते हैं:

$ crontab -e

फिर आपको अपने आप को एक क्रॉस्टैब रखने की अनुमति देनी होगी। Crontab के लिए मैन पेज देखें। OSX में, यह वही है जो करने की आवश्यकता है - परिवर्तन लिनक्स सिस्टम पर थोड़ा अलग है: संक्षेप में, सुनिश्चित करें कि आपकी उपयोगकर्ता आईडी /usr/lib/cron/cron.allow या उस / usr / lib / क्रोन / में है cron.allow मौजूद नहीं है। यह भी सुनिश्चित करें कि आपकी यूजर आईडी /usr/lib/cron/cron.deny में नहीं है।


1

आपके फ़ोल्डरों की निगरानी के लिए मैं जिस उपकरण का उपयोग करूंगा, वह हैज़ेल । यह स्क्रिप्ट को किक करने के लिए उत्कृष्ट होगा और आप समय के साथ कई और फ़ोल्डरों के लिए इसका उपयोग कर सकते हैं क्योंकि आप उन चीजों के बारे में सोचते हैं जिन्हें आप स्वचालित कर सकते थे।

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