Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> बाश प्रोग्रामिंग

Linux rsync कमांड, सिंटैक्स और उदाहरण [गाइड]

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 शेल कमांड के लिए हमारे अन्य लेख देखें!


  1. Linux और macOS में फ़ाइलों को त्वरित रूप से खोजने के लिए fd का उपयोग कैसे करें

    fd फाइंड कमांड का एक आसान विकल्प है। यह आपके टाइप किए गए कमांड को संक्षिप्त और बिंदु तक रखने के लिए एक संक्षिप्त सिंटैक्स और एक संक्षिप्त कमांड संरचना का उपयोग करता है। हालाँकि, वर्डसिटी की कमी जो fd को टाइप करना आसान बनाती है, उसे समझना अधिक कठिन हो जाता है। fd डिफ़ॉल्ट खोज कमांड की तुलना में अधिक

  1. ls फाइलों और निर्देशिकाओं को सूचीबद्ध करने के लिए लिनक्स में कमांड

    ls लिनक्स में कमांड संभवतः उन पहले कमांडों में से एक है जिन्हें आपको कभी भी उपयोग करने की आवश्यकता होती है। इस लेख में, हम कमांड और आमतौर पर इस्तेमाल किए जाने वाले पैरामीटर्स के बारे में जानेंगे। मेरे पसंदीदा विकल्पों का सेट इस प्रकार है: ls -Zaltrh आइए प्रत्येक विकल्प को अलग-अलग देखें, और समझाएं

  1. कमांड प्रॉम्प्ट मूल बातें:फाइलों और फ़ोल्डरों के साथ कार्य करना

    कमांड प्रॉम्प्ट बेसिक्स:फाइलों और फोल्डर के साथ काम करना अपनी फ़ाइलों को नेविगेट करने के लिए फ़ाइल एक्सप्लोरर का उपयोग करके थक गए हैं? ठीक है, यह आप नहीं हो सकते, जब तक कि आप एक डेवलपर या आईटी पेशेवर न हों। डेवलपर या नहीं, बुनियादी कमांड लाइन ज्ञान हमेशा अच्छा होता है। इस गाइड में, हम कुछ सामान्य