rsync (rिमोट सिंक्रोनाइज़ेशन) कमांड एक फ़ाइल कॉपी टूल है जो लोकल स्टोरेज डिस्क के साथ-साथ नेटवर्क पर फ़ाइलों को सिंक्रोनाइज़ कर सकता है।
यह प्रचलित है क्योंकि यह बहुत अच्छा है। यह आमतौर पर फ़ाइलों का बैकअप लेने, फ़ाइल सर्वर को एक-दूसरे के साथ अप-टू-डेट रखने, और वेब ऐप्स के लिए कोड और एसेट को सर्वर पर डेप्लॉय करने के लिए उपयोग किया जाता है।
rsync हर उस फ़ाइल को कॉपी कर सकता है और करेगा जो यह देख सकता है और फ़ाइल आकार और संशोधन तिथि के आधार पर सिंक्रोनाइज़ करेगा कि क्या बदला है और क्या अपडेट करने की आवश्यकता है।
rsync कमांड BIG है, और हम आपको कुछ व्यावहारिक अनुप्रयोगों के साथ शुरू करेंगे जो इस गाइड में सबसे आम उपयोग परिदृश्यों को कवर करेंगे।
सिंटैक्स
rsync OPTIONS SOURCE DESTINATION
ध्यान दें कि:
- OPTIONS नीचे दी गई सूची से विकल्पों की एक सूची है, जो स्पेस से अलग की गई है
- SOURCE सिंक्रोनाइज़ की जाने वाली फ़ाइल या फ़ोल्डर के स्रोत का पथ है और इसमें रिमोट होस्ट का विवरण शामिल हो सकता है
- DESTINATION वह पथ है जहां आप फ़ाइल या फ़ोल्डर को सिंक्रोनाइज़ करना चाहते हैं और इसमें रिमोट होस्ट का विवरण शामिल हो सकता है
- SOURCE और DESTINATION क्रम में होने चाहिए!
विकल्प
यहां मैनुअल से सीधे rsync के लिए आमतौर पर उपयोग किए जाने वाले विकल्प दिए गए हैं:
क्या कॉपी करना है:
-r, --recursive डायरेक्टरी में पुनरावृति करें -R, --relative सापेक्ष पथ नामों का उपयोग करें --exclude=PATTERN PATTERN से मेल खाने वाली फ़ाइलों को बाहर करें --exclude-from=FILE FILE से बाहर करने के पैटर्न पढ़ें -I, --ignore-times उन फ़ाइलों को बाहर न करें जो लंबाई और समय से मेल खाते हैं --size-only यह निर्धारित करने के लिए केवल फ़ाइल आकार का उपयोग करें कि फ़ाइल स्थानांतरित की जानी चाहिए admin@wsxdn.com --modify-window=NUM फ़ाइल मिलान के लिए टाइमस्टैम्प विंडो (सेकंड) (डिफ़ॉल्ट=0) --include=PATTERN PATTERN से मेल खाने वाली फ़ाइलों को बाहर न करें --include-from=FILE FILE से शामिल करने के पैटर्न पढ़ें
कैसे कॉपी करना है:
-n, --dry-run कोई बदलाव किए बिना ट्रायल रन करें -l, --links सिम्लिंक को सिम्लिंक के रूप में कॉपी करें -L, --copy-links सिम्लिंक को संदर्भित फ़ाइल/डायरेक्टरी में बदलें --copy-unsafe-links केवल "असुरक्षित" सिम्लिंक को बदला जाता है --safe-links डेस्टिनेशन ट्री के बाहर के लिंक को अनदेखा करें --munge-links सिम्लिंक को सुरक्षित बनाने के लिए मंगे करें -H, --hard-links हार्ड लिंक संरक्षित करें --devices डिवाइस फ़ाइलें संरक्षित करें (सुपर-यूजर केवल) --specials विशेष फ़ाइलें संरक्षित करें -D, --devices --specials डिवाइस संरक्षित करें (सुपर-यूजर केवल) +files -g, --group समूह संरक्षित करें -o, --owner मालिक संरक्षित करें (सुपर-यूजर केवल) -p, --perms अनुमतियां संरक्षित करें --remove-source-files प्रेषक सिंक्रोनाइज़ की गई फ़ाइलों को हटाता है (नॉन-डायरेक्टरी) -t, --times समय संरक्षित करें -S, --sparse स्पार्स फ़ाइलों को कुशलतापूर्वक हैंडल करें -x, --one-file-system फाइलसिस्टम सीमाओं को पार न करें -B, --block-size=SIZE निश्चित चेकसम ब्लॉक-आकार बाध्य करें (डिफ़ॉल्ट 700) -e, --rsh=COMMAND rsh प्रतिस्थापन निर्दिष्ट करें --rsync-path=PATH रिमोट मशीन पर rsync का पथ निर्दिष्ट करें --numeric-ids उपयोगकर्ता/समूह नाम द्वारा uid/gid मान मैप न करें --timeout=SECONDS IO टाइमआउट को सेकंड में सेट करें -W, --whole-file पूरी फ़ाइलें कॉपी करें, कोई वृद्धिशील जांच नहीं
डेस्टिनेशन विकल्प:
-a, --archive आर्काइव मोड -rlptgoD के बराबर (कोई -H,-A,-X नहीं) -b, --backup बैकअप बनाएं (--suffix & --backup-dir देखें) --backup-dir=DIR इस डायरेक्टरी में बैकअप बनाएं -z, --compress ट्रांसफर के दौरान फ़ाइल डेटा कंप्रेस करें -c, --checksum मॉड-टाइम और आकार के बजाय चेकसम के आधार पर छोड़ें -C, --cvs-exclude CVS के समान तरीके से फ़ाइलों को स्वचालित रूप से अनदेखा करें --existing केवल उन फ़ाइलों को अपडेट करें जो पहले से मौजूद हैं --delete भेजने वाले पक्ष पर मौजूद नहीं फ़ाइलों को हटाएं --delete-excluded प्राप्त करने वाले पक्ष पर बाहर की गई फ़ाइलों को भी हटाएं --delete-after रिसीवर ट्रांसफर के बाद हटाता है, दौरान नहीं --force डायरेक्टरी को हटाने के लिए बाध्य करें भले ही खाली न हो --ignore-errors IO त्रुटियां होने पर भी हटाएं --max-delete=NUM NUM से अधिक फ़ाइलें न हटाएं --log-file-format=FMT निर्दिष्ट प्रारूप का उपयोग करके फ़ाइल ट्रांसफर लॉग करें --partial आंशिक रूप से स्थानांतरित फ़ाइलों को रखें --progress ट्रांसफर के दौरान प्रगति दिखाएं -P --partial --progress के बराबर --stats कुछ फ़ाइल ट्रांसफर आँकड़े दें -T --temp-dir=DIR DIR डायरेक्टरी में अस्थायी फ़ाइलें बनाएं --compare-dest=DIR DIR के सापेक्ष डेस्टिनेशन फ़ाइलों की तुलना भी करें -u, --update केवल अपडेट करें (नई फ़ाइलों को ओवरराइट न करें)
विविध विकल्प:
--address=ADDRESS निर्दिष्ट पते से बाइंड करें --blocking-io रिमोट शेल के लिए ब्लॉकिंग IO उपयोग करें --bwlimit=KBPS I/O बैंडविड्थ सीमित करें, KB प्रति सेकंड --config=FILE वैकल्पिक rsyncd.conf फ़ाइल निर्दिष्ट करें (डेमन) --daemon rsync डेमन के रूप में चलाएं --no-detach पैरेंट से डिटैच न करें (डेमन) --password-file=FILE FILE से डेमन-एक्सेस पासवर्ड प्राप्त करें --port=PORT वैकल्पिक rsyncd पोर्ट नंबर निर्दिष्ट करें -f, --read-batch=FILE बैच फ़ाइल पढ़ें -F, --write-batch=FILE बैच फ़ाइल लिखें --version संस्करण संख्या प्रिंट करें -v, --verbose वर्बोसिटी बढ़ाएं -q, --quiet वर्बोसिटी घटाएं -4, --ipv4 IPv4 को प्राथमिकता दें -6, --ipv6 IPv6 को प्राथमिकता दें -h, --help यह सहायता स्क्रीन दिखाएं
विकल्पों की पूरी सूची के लिए, निम्न चलाकर rsync उपयोगकर्ता मैनुअल देखें:
man rsync
उदाहरण
मैं नीचे प्रत्येक विकल्प का अर्थ नहीं दोहराऊंगा – यदि आप सुनिश्चित नहीं हैं कि कोई विकल्प क्या करता है तो ऊपर दी गई सूची पर वापस देखें – आप गलत कमांड चलाकर कोई डेटा खोना नहीं चाहते!
लोकल टू लोकल (सिंगल फ़ाइल)
यहां बताया गया है कि rsync का उपयोग करके लोकल मशीन पर एक डायरेक्टरी से दूसरी डायरेक्टरी में एक सिंगल फ़ाइल को कैसे सिंक्रोनाइज़ करें:
rsync -zvh /path/to/my-file.tar /path/to/destination/
यहां से, सभी उदाहरण डायरेक्टरी सिंक करने पर केंद्रित होंगे, क्योंकि यह rsync के लिए सबसे आम उपयोग परिदृश्य है
लोकल टू लोकल (डायरेक्टरी)
एक ही मशीन पर एक डायरेक्टरी से दूसरी डायरेक्टरी में सभी फ़ाइलों को सिंक्रोनाइज़ करें:
rsync -avzh /path/to/source /path/to/destination
यह -avzh चीज क्या है? यह विकल्पों का एक गुच्छा है, मर्ज किया गया। यह सिर्फ -a -v -z -h टाइप करने का एक तेज़ तरीका है
लोकल टू रिमोट (डायरेक्टरी)
नेटवर्क पर एक रिमोट कंप्यूटर पर डेस्टिनेशन के लिए लोकल सोर्स डायरेक्टरी से सभी फ़ाइलों को सिंक्रोनाइज़ करें:
rsync -avz /path/to/source/ user@192.168.1.11:/path/at/destination/
ध्यान दें कि:
- username रिमोट सिस्टम पर उपयोगकर्ता है
- /path/to/source/ लोकल कंप्यूटर पर सोर्स डायरेक्टरी का पथ है
- 192.168.1.11 रिमोट सिस्टम का IP पता है – आप IP पता या होस्टनाम उपयोग कर सकते हैं
- /path/at/destination/ रिमोट फाइलसिस्टम पर पथ है
- सिंक्रोनाइज़ेशन rsync डेमन का उपयोग करके होगा
SSH का उपयोग करके लोकल टू रिमोट (डायरेक्टरी)
-e विकल्प आपको rsync द्वारा उपयोग किए जाने वाले प्रोटोकॉल को निर्दिष्ट करने देता है, जिससे हम यह निर्दिष्ट कर सकते हैं कि हम SSH का उपयोग करके फ़ाइलों को सुरक्षित रूप से स्थानांतरित करना चाहते हैं:
rsync -avzh -e ssh /path/to/source/ user@192.168.1.11:/path/at/destination/
रिमोट टू लोकल (डायरेक्टरी)
नेटवर्क पर एक रिमोट कंप्यूटर पर सोर्स डायरेक्टरी से लोकल कंप्यूटर पर डेस्टिनेशन के लिए सभी फ़ाइलों को सिंक्रोनाइज़ करें:
rsync -avzh user@192.168.1.11:/path/to/source /path/to/destination
ध्यान दें कि:
- username रिमोट सिस्टम पर उपयोगकर्ता है
- 192.168.1.11 रिमोट सिस्टम का IP पता है – आप IP पता या होस्टनाम उपयोग कर सकते हैं
- /path/to/source रिमोट फाइलसिस्टम पर पथ है
- /path/to/destination लोकल कंप्यूटर पर डेस्टिनेशन है
- सिंक्रोनाइज़ेशन rsync डेमन का उपयोग करके होगा
SSH का उपयोग करके रिमोट टू लोकल (डायरेक्टरी)
rsync -avzh -e ssh user@192.168.1.11:/path/to/source /path/to/destination
आप सिंगल फ़ाइलों को लोकल टू रिमोट, रिमोट टू लोकल, और SSH का उपयोग करके भी सिंक कर सकते हैं, ठीक वैसे ही जैसे हमने डायरेक्टरी के साथ दिखाया है
सिंक्रोनाइज़ करते समय विचार करने योग्य अन्य बातें
बैंडविड्थ पर विचार करें
यदि आप इंटरनेट पर सिंक्रोनाइज़ कर रहे हैं, तो आप उपयोग की जाने वाली बैंडविड्थ को सीमित करना चाह सकते हैं ताकि आप अपने नेटवर्क पर अन्य सेवाओं को धीमा न करें:
rsync -avz --bwlimit 512 /path/to/source/ user@192.168.1.11:/path/at/destination/
हटाने पर विचार करें
यदि सोर्स पर कोई फ़ाइल या फ़ोल्डर हटा दिया गया है लेकिन डेस्टिनेशन पर मौजूद है, तो आप डेस्टिनेशन पर फ़ाइल या फ़ोल्डर को हटाना चाह सकते हैं ताकि यह सोर्स का सटीक मिरर हो। इस विकल्प का उपयोग करने से पहले हमेशा सुनिश्चित करें कि आप चीजों को हटाना चाहते हैं:
rsync -avz --delete /path/to/source/ user@192.168.1.11:/path/at/destination/
फ़ाइलों को शामिल या बाहर करना
फ़ाइल पैटर्न मिलान करके फ़ाइलों को शामिल करें और बाहर करें – यदि ऐसी फ़ाइलें हैं जिन्हें आप सिंक नहीं करना चाहते हैं, तो उन्हें छोड़ा जा सकता है:
rsync -avz -e ssh --exclude '*' --include 'keep*' /path/to/source/ user@192.168.1.11:/path/at/destination/
यह rsync कमांड केवल उन फ़ाइलों और डायरेक्टरी को सिंक करेगा जो 'keep-' से शुरू होती हैं और अन्य सभी फ़ाइलों और डायरेक्टरी (*) को बाहर करेगी।
ड्राई रन पर विचार करें
एक ड्राई रन उन फ़ाइलों को प्रिंट करेगा जो बदली जाएंगी, लेकिन यह वास्तव में कुछ भी नहीं करेगा – कोई फ़ाइल सिंक्रोनाइज़ या बदली नहीं जाएगी, इसलिए आप विभिन्न विकल्पों के साथ प्रयोग कर सकते हैं और प्रभाव देख सकते हैं:
rsync -avz --dry-run /path/to/source/ user@192.168.1.11:/path/at/destination/
निष्कर्ष
अपने सिस्टम पर बड़ी संख्या में फ़ाइलों को ले जाते समय, एंटर कुंजी दबाने से पहले अपने इनपुट की जांच करना सुनिश्चित करें – आप गलत दिशा में सिंक्रोनाइज़ नहीं करना चाहते और महत्वपूर्ण फ़ाइलों को हटाना नहीं चाहते!
Linux शेल कमांड के लिए हमारे अन्य लेख देखें!