rsync (r इमोशन सिंक्रनाइज़ेशन ) कमांड एक फाइल कॉपी टूल है जो फाइलों को स्थानीय स्टोरेज डिस्क के साथ-साथ एक नेटवर्क पर सिंक्रोनाइज़ कर सकता है।
यह प्रचलित है क्योंकि यह बहुत अच्छा है। यह आमतौर पर फ़ाइलों का बैकअप लेने, फ़ाइल सर्वरों को एक-दूसरे के साथ अप-टू-डेट रखने और सर्वर पर वेब ऐप्स के लिए कोड और संपत्तियां परिनियोजित करने के लिए उपयोग किया जाता है।
rsync यह देखने के लिए कि क्या बदला है और क्या अद्यतन करने की आवश्यकता है, यह देखने के लिए फ़ाइल आकार और संशोधन तिथि के आधार पर लगभग हर फ़ाइल को कॉपी कर सकता है और कॉपी करेगा।
rsync आदेश बड़ा है, और हम आपको कुछ व्यावहारिक अनुप्रयोगों के साथ आरंभ करेंगे जो इस मार्गदर्शिका में सबसे सामान्य उपयोग परिदृश्यों को कवर करेंगे ।
सिंटैक्स
rsync OPTIONS SOURCE DESTINATION
ध्यान दें कि:
- विकल्प नीचे दी गई सूची से विकल्पों की एक सूची है, जो एक स्थान से अलग होती है
- SOURCE सिंक्रनाइज़ करने के लिए फ़ाइल या फ़ोल्डर के स्रोत का पथ है और इसमें दूरस्थ होस्ट के विवरण शामिल हो सकते हैं
- DESTINATION उस गंतव्य का पथ है जिसमें आप फ़ाइल या फ़ोल्डर को सिंक्रनाइज़ करना चाहते हैं और इसमें दूरस्थ होस्ट के विवरण शामिल हो सकते हैं
- स्रोत और गंतव्य क्रम में होने चाहिए!
विकल्प
यहां rsync . के लिए आमतौर पर उपयोग किए जाने वाले विकल्प दिए गए हैं , सीधे मैनुअल से:
क्या कॉपी करें:
-r, --recursive Recurse into directories -R, --relative Use relative path names --exclude=PATTERN Exclude files matching PATTERN --exclude-from=FILE Read exclude patterns from FILE -I, --ignore-times Don't exclude files that match length and time --size-only Only use file size when determining if a file should be transferred [email protected] --modify-window=NUM Timestamp window (seconds) for file match (default=0) --include=PATTERN Don't exclude files matching PATTERN --include-from=FILE Read include patterns from FILE
कॉपी कैसे करें:
-n, --dry-run Perform a trial run with no changes made -l, --links Copy symlinks as symlinks -L, --copy-links Transform symlink into referent file/dir --copy-unsafe-links Only "unsafe" symlinks are transformed --safe-links Ignore links outside the destination tree --munge-links Munge symlinks to make them safer -H, --hard-links Preserve hard links --devices Preserve device files (super-user only) --specials Preserve special files -D, --devices --specials Preserve devices (super-user only) +files -g, --group Preserve group -o, --owner Preserve owner (super-user only) -p, --perms Preserve permissions --remove-source-files Sender removes synchronized files (non-dir) -t, --times Preserve times -S, --sparse Handle sparse files efficiently -x, --one-file-system Don't cross filesystem boundaries -B, --block-size=SIZE Force a fixed checksum block-size (default 700) -e, --rsh=COMMAND Specify rsh replacement --rsync-path=PATH Specify path to rsync on the remote machine --numeric-ids Don't map uid/gid values by user/group name --timeout=SECONDS Set IO timeout in seconds -W, --whole-file Copy whole files, no incremental checks
गंतव्य विकल्प:
-a, --archive Archive mode equals -rlptgoD (no -H,-A,-X) -b, --backup Make backups (see --suffix & --backup-dir) --backup-dir=DIR Make backups into this directory -z, --compress Compress file data during the transfer -c, --checksum Skip based on checksum, not mod-time & size -C, --cvs-exclude Auto ignore files in the same way CVS does --existing Only update files that already exist --delete Delete files that don't exist on the sending side --delete-excluded Also delete excluded files on the receiving side --delete-after Receiver deletes after transfer, not during --force Force deletion of directories even if not empty --ignore-errors Delete even if there are IO errors --max-delete=NUM Don't delete more than NUM files --log-file-format=FMT Log file transfers using specified format --partial Keep partially transferred files --progress Show progress during transfer -P Equivalent to --partial --progress --stats Give some file transfer stats -T --temp-dir=DIR Create temporary files in directory DIR --compare-dest=DIR Also compare destination files relative to DIR -u, --update Update only (don't overwrite newer files)
विविध विकल्प:
--address=ADDRESS Bind to the specified address --blocking-io Use blocking IO for the remote shell --bwlimit=KBPS Limit I/O bandwidth, KBytes per second --config=FILE Specify alternate rsyncd.conf file (daemon) --daemon Run as a rsync daemon --no-detach Do not detach from the parent (daemon) --password-file=FILE Get daemon-access password from FILE --port=PORT Specify alternate rsyncd port number -f, --read-batch=FILE Read batch file -F, --write-batch=FILE Write batch file --version Print version number -v, --verbose Increase verbosity -q, --quiet Decrease verbosity -4, --ipv4 Prefer IPv4 -6, --ipv6 Prefer IPv6 -h, --help Show this help screen
विकल्पों की पूरी सूची के लिए, rsync . देखें उपयोगकर्ता पुस्तिका चलाकर:
man rsync
उदाहरण
मैं नीचे दिए गए प्रत्येक विकल्प का अर्थ नहीं दोहराऊंगा - सुनिश्चित करें कि आप ऊपर दी गई सूची में वापस देखें यदि आप सुनिश्चित नहीं हैं कि विकल्प का क्या अर्थ है - आप गलत कमांड नहीं चलाना चाहते हैं और कोई डेटा खोना नहीं चाहते हैं!
स्थानीय से स्थानीय (एकल फ़ाइल)
स्थानीय मशीन पर rsync . का उपयोग करके किसी एकल फ़ाइल को एक निर्देशिका से दूसरी निर्देशिका में सिंक्रनाइज़ करने का तरीका यहां दिया गया है :
rsync -zvh /path/to/my-file.tar /path/to/destination/
यहां से, सभी उदाहरण निर्देशिकाओं को समन्वयित करने पर केंद्रित होंगे, क्योंकि यह rsync के लिए सबसे सामान्य उपयोग परिदृश्य है
स्थानीय से स्थानीय (निर्देशिका)
एक ही मशीन पर सभी फाइलों को एक निर्देशिका से दूसरी निर्देशिका में सिंक्रनाइज़ करें:
rsync -avzh /path/to/source /path/to/destination
आवज़ क्या है? यह विकल्पों का एक समूह है, मर्ज किया गया। यह टाइप करने का एक तेज़ तरीका है -a -v -z -h
लोकल से रिमोट (डायरेक्टरी)
किसी नेटवर्क पर किसी दूरस्थ कंप्यूटर पर स्थानीय स्रोत निर्देशिका से गंतव्य तक सभी फ़ाइलों को सिंक्रनाइज़ करें:
rsync -avz /path/to/source/ [email protected]:/path/at/destination/
ध्यान दें कि:
- उपयोगकर्ता नाम रिमोट सिस्टम पर उपयोगकर्ता है
- /पथ/से/स्रोत/ स्थानीय कंप्यूटर पर स्रोत निर्देशिका का पथ है
- 192.168.1.11 रिमोट सिस्टम का आईपी पता है - आप आईपी पते या होस्टनाम का उपयोग कर सकते हैं
- /path/at/destination/ दूरस्थ फ़ाइल सिस्टम पर पथ है
- सिंक्रनाइज़ेशन rsync . का उपयोग करके होगा डेमन
SSH (निर्देशिका) का उपयोग करके स्थानीय से दूरस्थ तक
-e विकल्प आपको rsync, . द्वारा उपयोग किए गए प्रोटोकॉल को निर्दिष्ट करने देता है हमें यह निर्दिष्ट करने की अनुमति देता है कि हम SSH का उपयोग करके सुरक्षित रूप से फ़ाइलें स्थानांतरित करना चाहते हैं:
rsync -avzh -e ssh /path/to/source/ [email protected]:/path/at/destination/
रिमोट से लोकल (डायरेक्टरी)
किसी दूरस्थ कंप्यूटर पर स्रोत निर्देशिका से सभी फ़ाइलों को एक नेटवर्क पर स्थानीय कंप्यूटर पर एक गंतव्य के लिए सिंक्रनाइज़ करें:
rsync -avzh [email protected]:/path/to/source /path/to/destination
ध्यान दें कि:
- उपयोगकर्ता नाम रिमोट सिस्टम पर उपयोगकर्ता है
- 192.168.1.11 रिमोट सिस्टम का आईपी पता है - आप आईपी पते या होस्टनाम का उपयोग कर सकते हैं
- /पथ/से/स्रोत दूरस्थ फ़ाइल सिस्टम पर पथ है
- /पथ/से/गंतव्य स्थानीय कंप्यूटर पर गंतव्य है
- सिंक्रनाइज़ेशन rsync . का उपयोग करके होगा डेमन
SSH (निर्देशिका) का उपयोग करके रिमोट से लोकल तक
rsync -avzh -e ssh [email protected]:/path/to/source /path/to/destination
आप एकल फ़ाइलों को स्थानीय से दूरस्थ, दूरस्थ से स्थानीय और SSH का उपयोग करके भी समन्वयित कर सकते हैं, जैसा कि हमने निर्देशिकाओं के साथ दिखाया है
सिंक्रनाइज़ करते समय ध्यान देने योग्य अन्य बातें
बैंडविड्थ पर विचार करें
यदि आप इंटरनेट पर सिंक्रोनाइज़ कर रहे हैं, तो आप उपयोग की जाने वाली बैंडविड्थ को सीमित करना चाह सकते हैं ताकि आप अपने नेटवर्क पर अन्य सेवाओं को धीमा न करें:
rsync -avz --bwlimit 512 /path/to/source/ [email protected]:/path/at/destination/
हटाने पर विचार करें
यदि कोई फ़ाइल या फ़ोल्डर स्रोत पर हटा दिया गया है लेकिन गंतव्य पर मौजूद है, तो आप गंतव्य पर फ़ाइल या फ़ोल्डर को हटाना चाह सकते हैं ताकि यह स्रोत का सटीक दर्पण हो। इस विकल्प का उपयोग करने से पहले हमेशा सुनिश्चित करें कि आप सुनिश्चित हैं कि आप चीजों को हटाना चाहते हैं:
rsync -avz --delete /path/to/source/ [email protected]:/path/at/destination/
फ़ाइलें शामिल करना या छोड़ना
फ़ाइल पैटर्न का मिलान करके फ़ाइलें शामिल करें और निकालें - अगर ऐसी फ़ाइलें हैं जिन्हें आप सिंक नहीं करना चाहते हैं, तो उन्हें छोड़ा जा सकता है:
rsync -avz -e ssh --exclude '*' --include 'keep*' /path/to/source/ [email protected]:/path/at/destination/
यह rsync कमांड केवल फाइलों और निर्देशिकाओं को सिंक करेगा, जो 'कीप-' से शुरू होता है और अन्य सभी फाइलों और निर्देशिकाओं (*) को बाहर करता है।
ड्राई रन पर विचार करें
ए ड्राई रन बदली जाने वाली फ़ाइलों का प्रिंट आउट ले लेगा, लेकिन यह वास्तव में नहीं करेगा कुछ भी - कोई भी फाइल सिंक्रनाइज़ या परिवर्तित नहीं की जाएगी, इसलिए आप विभिन्न विकल्पों के साथ प्रयोग कर सकते हैं और प्रभाव देख सकते हैं:
rsync -avz --dry-run /path/to/source/ [email protected]:/path/at/destination/
निष्कर्ष
अपने सिस्टम पर बड़ी संख्या में फ़ाइलों को इधर-उधर करते समय, सुनिश्चित करें कि आप एंटर कुंजी दबाने से पहले अपने इनपुट की जांच कर लें - आप गलत दिशा में सिंक्रनाइज़ नहीं करना चाहते हैं और महत्वपूर्ण फ़ाइलों को हटाना नहीं चाहते हैं!
Linux शेल कमांड के लिए हमारे अन्य लेख देखें!