Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

rsync के साथ लिनक्स का बैकअप लेना:15 आवश्यक कमांड

<पी> rsync के साथ लिनक्स का बैकअप लेना:15 आवश्यक कमांड rsync का मतलब रिमोट सिंक है। <पी> rsync का उपयोग UNIX / Linux में बैकअप ऑपरेशन करने के लिए किया जाता है।

<पी> rsync उपयोगिता का उपयोग फ़ाइलों और निर्देशिकाओं को एक स्थान से दूसरे स्थान पर प्रभावी तरीके से सिंक्रनाइज़ करने के लिए किया जाता है। बैकअप स्थान स्थानीय सर्वर या दूरस्थ सर्वर पर हो सकता है।

rsync की महत्वपूर्ण विशेषताएं

  • गति :पहली बार, rsync स्रोत और गंतव्य निर्देशिकाओं के बीच संपूर्ण सामग्री की प्रतिकृति बनाता है। अगली बार, rsync केवल परिवर्तित ब्लॉक या बाइट्स को गंतव्य स्थान पर स्थानांतरित करता है, जिससे स्थानांतरण वास्तव में तेज़ हो जाता है।
  • सुरक्षा :rsync स्थानांतरण के दौरान ssh प्रोटोकॉल का उपयोग करके डेटा के एन्क्रिप्शन की अनुमति देता है।
  • कम बैंडविड्थ :rsync क्रमशः भेजने और प्राप्त करने वाले छोर पर ब्लॉक द्वारा डेटा ब्लॉक के संपीड़न और डीकंप्रेसन का उपयोग करता है। इसलिए rsync द्वारा उपयोग की जाने वाली बैंडविड्थ अन्य फ़ाइल स्थानांतरण प्रोटोकॉल की तुलना में हमेशा कम होगी।
  • विशेषाधिकार :rsync को स्थापित और निष्पादित करने के लिए किसी विशेष विशेषाधिकार की आवश्यकता नहीं है

सिंटैक्स

$ rsync options source destination
<पी> स्रोत और गंतव्य या तो स्थानीय या दूरस्थ हो सकते हैं। रिमोट के मामले में, लॉगिन नाम, रिमोट सर्वर नाम और स्थान निर्दिष्ट करें।

उदाहरण 1. एक स्थानीय सर्वर में दो निर्देशिकाओं को सिंक्रनाइज़ करें

<पी> स्थानीय कंप्यूटर में दो निर्देशिकाओं को सिंक करने के लिए, निम्नलिखित rsync -zvr कमांड का उपयोग करें।

$ rsync -zvr /var/opt/installation/inventory/ /root/temp
building file list ... done
sva.xml
svB.xml
.
sent 26385 bytes received 1098 bytes 54966.00 bytes/sec
total size is 44867 speedup is 1.63
$
<पी> उपरोक्त rsync उदाहरण में:

  • -z संपीड़न को सक्षम करने के लिए है
  • -v वर्बोज़
  • -r पुनरावर्ती इंगित करता है
<पी> अब आइए उन फ़ाइलों में से एक पर टाइमस्टैम्प देखें जिन्हें स्रोत से गंतव्य तक कॉपी किया गया था। जैसा कि आप नीचे देख सकते हैं, rsync ने सिंक के दौरान टाइमस्टैम्प को संरक्षित नहीं किया।

$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 bin bin 949 Jun 18 2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root bin 949 Sep 2 2009 /root/temp/sva.xml

उदाहरण 2. rsync -a का उपयोग करके सिंक के दौरान टाइमस्टैम्प को सुरक्षित रखें

<पी> rsync विकल्प -a संग्रह मोड को इंगित करता है। -एक विकल्प निम्न कार्य करता है,

  • पुनरावर्ती मोड
  • प्रतीकात्मक लिंक सुरक्षित रखता है
  • अनुमतियाँ सुरक्षित रखता है
  • टाइमस्टैम्प को सुरक्षित रखता है
  • स्वामी और समूह को सुरक्षित रखता है
<पी> अब, उदाहरण 1 में दिए गए समान कमांड को निष्पादित करना (लेकिन rsync विकल्प -a के साथ) जैसा कि नीचे दिखाया गया है:

$ rsync -azv /var/opt/installation/inventory/ /root/temp/
building file list ... done
./
sva.xml
svB.xml
.
sent 26499 bytes received 1104 bytes 55206.00 bytes/sec
total size is 44867 speedup is 1.63
$
<पी> जैसा कि आप नीचे देख सकते हैं, rsync ने सिंक के दौरान टाइमस्टैम्प को संरक्षित किया।

$ ls -l /var/opt/installation/inventory/sva.xml /root/temp/sva.xml
-r--r--r-- 1 root bin 949 Jun 18 2009 /var/opt/installation/inventory/sva.xml
-r--r--r-- 1 root bin 949 Jun 18 2009 /root/temp/sva.xml

उदाहरण 3. केवल एक फ़ाइल को सिंक्रोनाइज़ करें

<पी> केवल एक फ़ाइल की प्रतिलिपि बनाने के लिए, फ़ाइल नाम को rsync कमांड में निर्दिष्ट करें, जैसा कि नीचे दिखाया गया है।

$ rsync -v /var/lib/rpm/Pubkeys /root/temp/
Pubkeys
sent 42 bytes received 12380 bytes 3549.14 bytes/sec
total size is 12288 speedup is 0.99

उदाहरण 4. फ़ाइलों को लोकल से रिमोट में सिंक्रोनाइज़ करें

<पी> rsync आपको स्थानीय और दूरस्थ सिस्टम के बीच फ़ाइलों/निर्देशिकाओं को सिंक्रनाइज़ करने की अनुमति देता है।

$ rsync -avz /root/temp/ thegeekstuff@192.168.200.10:/home/thegeekstuff/temp/
Password:
building file list ... done
./
rpm/
rpm/Basenames
rpm/Conflictname
sent 15810261 bytes received 412 bytes 2432411.23 bytes/sec
total size is 45305958 speedup is 2.87
<पी> रिमोट सर्वर के साथ सिंक्रोनाइज़ेशन करते समय, आपको रिमोट सर्वर का उपयोगकर्ता नाम और आईपी-पता निर्दिष्ट करना होगा। आपको दूरस्थ सर्वर पर गंतव्य निर्देशिका भी निर्दिष्ट करनी चाहिए। प्रारूप username@machinename:path

है <पी> जैसा कि आप ऊपर देख सकते हैं, यह स्थानीय से दूरस्थ सर्वर पर rsync करते समय पासवर्ड मांगता है।

<पी> कभी-कभी आप स्थानीय से दूरस्थ सर्वर पर फ़ाइलों का बैकअप लेते समय पासवर्ड दर्ज नहीं करना चाहते हैं। उदाहरण के लिए, यदि आपके पास एक बैकअप शेल स्क्रिप्ट है, जो rsync का उपयोग करके स्थानीय से दूरस्थ सर्वर पर फ़ाइलों को कॉपी करती है, तो आपको पासवर्ड दर्ज किए बिना rsync करने की क्षमता की आवश्यकता है।

<पी> ऐसा करने के लिए, जैसा कि हमने पहले बताया था, एसएसएच पासवर्ड रहित लॉगिन सेटअप करें।

उदाहरण 5. फ़ाइलों को रिमोट से लोकल में सिंक्रोनाइज़ करें

<पी> जब आप फ़ाइलों को दूरस्थ से स्थानीय में सिंक्रनाइज़ करना चाहते हैं, तो स्रोत में दूरस्थ पथ और लक्ष्य में स्थानीय पथ निर्दिष्ट करें जैसा कि नीचे दिखाया गया है।

$ rsync -avz thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames
.
sent 406 bytes received 15810230 bytes 2432405.54 bytes/sec
total size is 45305958 speedup is 2.87

उदाहरण 6. सिंक्रोनाइज़ेशन के लिए रिमोट शेल

<पी> rsync आपको उस दूरस्थ शेल को निर्दिष्ट करने की अनुमति देता है जिसका आप उपयोग करना चाहते हैं। सुरक्षित रिमोट कनेक्शन को सक्षम करने के लिए आप rsync ssh का उपयोग कर सकते हैं।

<पी> किस रिमोट शेल का उपयोग करना है यह निर्दिष्ट करने के लिए rsync -e ssh का उपयोग करें। इस स्थिति में, rsync ssh का उपयोग करेगा।

$ rsync -avz -e ssh thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
rpm/Basenames
sent 406 bytes received 15810230 bytes 2432405.54 bytes/sec
total size is 45305958 speedup is 2.87

उदाहरण 7. गंतव्य पर संशोधित फ़ाइलों को अधिलेखित न करें

<पी> एक सामान्य सिंक स्थिति में, यदि किसी फ़ाइल को गंतव्य पर संशोधित किया जाता है, तो हम स्रोत से पुरानी फ़ाइल के साथ फ़ाइल को अधिलेखित नहीं करना चाहेंगे।

<पी> ठीक वैसा ही करने के लिए rsync -u विकल्प का उपयोग करें। (अर्थात यदि कोई फ़ाइल संशोधित है तो उसे गंतव्य पर अधिलेखित न करें)। निम्नलिखित उदाहरण में, Basenames नामक फ़ाइल गंतव्य पर पहले से ही संशोधित है। इसलिए, इसे rsync -u.

से अधिलेखित नहीं किया जाएगा
$ ls -l /root/temp/Basenames
total 39088
-rwxr-xr-x 1 root root 4096 Sep 2 11:35 Basenames
$ rsync -avzu thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp
Password:
receiving file list ... done
rpm/
sent 122 bytes received 505 bytes 114.00 bytes/sec
total size is 45305958 speedup is 72258.31
$ ls -lrt
total 39088
-rwxr-xr-x 1 root root 4096 Sep 2 11:35 Basenames

उदाहरण 8. केवल डायरेक्ट्री ट्री स्ट्रक्चर को सिंक्रोनाइज़ करें (फ़ाइलों को नहीं)

<पी> स्रोत से गंतव्य तक केवल निर्देशिका ट्री को सिंक्रनाइज़ करने के लिए rsync -d विकल्प का उपयोग करें। नीचे दिया गया उदाहरण, केवल निर्देशिका ट्री को पुनरावर्ती तरीके से सिंक्रनाइज़ करता है, निर्देशिकाओं में फ़ाइलों को नहीं।

$ rsync -v -d thegeekstuff@192.168.200.10:/var/lib/ .
Password:
receiving file list ... done
logrotate.status
CAM/
YaST2/
acpi/
sent 240 bytes received 1830 bytes 318.46 bytes/sec
total size is 956 speedup is 0.46

उदाहरण 9. स्थानांतरण के दौरान rsync प्रगति देखें

<पी> जब आप बैकअप के लिए rsync का उपयोग करते हैं, तो आप बैकअप की प्रगति जानना चाहेंगे। यानी कितनी फाइलें कॉपी हैं, यह किस दर से फाइल कॉपी कर रहा है, आदि।

<पी> rsync –progress विकल्प rsync निष्पादन की विस्तृत प्रगति प्रदर्शित करता है जैसा कि नीचे दिखाया गया है।

$ rsync -avz --progress thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ...
19 files to consider
./
Basenames
 5357568 100% 14.98MB/s 0:00:00 (xfer#1, to-check=17/19)
Conflictname
 12288 100% 35.09kB/s 0:00:00 (xfer#2, to-check=16/19)
.
.
.
sent 406 bytes received 15810211 bytes 2108082.27 bytes/sec
total size is 45305958 speedup is 2.87
<पी> आप स्थानीय लिनक्स सर्वर, या रिमोट लिनक्स सर्वर का बैकअप लेने के लिए rsnapshot उपयोगिता (जो rsync का उपयोग करता है) का भी उपयोग कर सकते हैं।

उदाहरण 10. लक्ष्य पर बनाई गई फ़ाइलें हटाएं

<पी> यदि कोई फ़ाइल स्रोत पर मौजूद नहीं है, लेकिन लक्ष्य पर मौजूद है, तो आप rsync के दौरान लक्ष्य पर फ़ाइल को हटाना चाह सकते हैं।

<पी> उस स्थिति में, नीचे दिखाए अनुसार -डिलीट विकल्प का उपयोग करें। rsync डिलीट विकल्प उन फ़ाइलों को हटा देता है जो स्रोत निर्देशिका में नहीं हैं।

# Source and target are in sync. Now creating new file at the target.
$ > new-file.txt
$ rsync -avz --delete thegeekstuff@192.168.200.10:/var/lib/rpm/ .
Password:
receiving file list ... done
deleting new-file.txt
./
sent 26 bytes received 390 bytes 48.94 bytes/sec
total size is 45305958 speedup is 108908.55
<पी> लक्ष्य के पास new-file.txt नामक नई फ़ाइल है, जब -delete विकल्प के साथ स्रोत के साथ सिंक्रनाइज़ किया जाता है, तो इसने फ़ाइल new-file.txt को हटा दिया

उदाहरण 11. लक्ष्य पर नई फ़ाइल न बनाएं

<पी> यदि आप चाहें, तो आप लक्ष्य पर केवल मौजूदा फ़ाइलों को अपडेट (सिंक) कर सकते हैं। यदि स्रोत में नई फ़ाइलें हैं, जो लक्ष्य पर नहीं हैं, तो आप लक्ष्य पर इन नई फ़ाइलों को बनाने से बच सकते हैं। यदि आप यह सुविधा चाहते हैं, तो rsync कमांड के साथ -मौजूदा विकल्प का उपयोग करें।

<पी> सबसे पहले, स्रोत पर एक new-file.txt जोड़ें।

[/var/lib/rpm ]$ > new-file.txt
<पी> इसके बाद, लक्ष्य से rsync निष्पादित करें।

$ rsync -avz --existing root@192.168.1.2:/var/lib/rpm/ .
root@192.168.1.2's password:
receiving file list ... done
./
sent 26 bytes received 419 bytes 46.84 bytes/sec
total size is 88551424 speedup is 198991.96
<पी> यदि आप उपरोक्त आउटपुट देखते हैं, तो उसे नई फ़ाइल new-file.txt

प्राप्त नहीं हुई है

उदाहरण 12. स्रोत और गंतव्य के बीच परिवर्तन देखें

<पी> यह विकल्प स्रोत और गंतव्य के बीच फ़ाइलों या निर्देशिकाओं में अंतर देखने के लिए उपयोगी है।

<पी> स्रोत पर:

$ ls -l /var/lib/rpm
-rw-r--r-- 1 root root 5357568 2010-06-24 08:57 Basenames
-rw-r--r-- 1 root root 12288 2008-05-28 22:03 Conflictname
-rw-r--r-- 1 root root 1179648 2010-06-24 08:57 Dirnames
<पी> गंतव्य पर:

$ ls -l /root/temp
-rw-r--r-- 1 root root 12288 May 28 2008 Conflictname
-rw-r--r-- 1 bin bin 1179648 Jun 24 05:27 Dirnames
-rw-r--r-- 1 root root 0 Sep 3 06:39 Basenames
<पी> उपरोक्त उदाहरण में, स्रोत और गंतव्य के बीच दो अंतर हैं। सबसे पहले, फ़ाइल का स्वामी और समूह Dirname भिन्न होता है। इसके बाद, फ़ाइल बेसनाम के लिए आकार भिन्न होता है।

<पी> अब देखते हैं कि rsync इस अंतर को कैसे प्रदर्शित करता है। -i विकल्प आइटम परिवर्तन प्रदर्शित करता है।

$ rsync -avzi thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
>f.st.... Basenames
.f....og. Dirnames
sent 48 bytes received 2182544 bytes 291012.27 bytes/sec
total size is 45305958 speedup is 20.76
<पी> आउटपुट में यह फ़ाइल नाम या निर्देशिका नाम के सामने कुछ 9 अक्षर प्रदर्शित करता है जो परिवर्तनों को दर्शाता है।

<पी> हमारे उदाहरण में, बेसनाम (और डरनाम) के सामने के अक्षर निम्नलिखित कहते हैं:

> specifies that a file is being transferred to the local host.
f represents that it is a file.
s represents size changes are there.
t represents timestamp changes are there.
o owner changed
g group changed.

उदाहरण 13. फ़ाइल स्थानांतरण के दौरान पैटर्न शामिल करें और निकालें

<पी> rsync आपको सिंक्रोनाइज़ेशन करते समय वह पैटर्न देने की अनुमति देता है जिसे आप फ़ाइलों या निर्देशिकाओं को शामिल करना और बाहर करना चाहते हैं।

$ rsync -avz --include 'P*' --exclude '*' thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Packages
Providename
Provideversion
Pubkeys
sent 129 bytes received 10286798 bytes 2285983.78 bytes/sec
total size is 32768000 speedup is 3.19
<पी> उपरोक्त उदाहरण में, इसमें केवल 'P' से शुरू होने वाली फ़ाइलें या निर्देशिकाएं शामिल हैं (rsync शामिल का उपयोग करके) और अन्य सभी फ़ाइलें शामिल नहीं हैं। (rsync का उपयोग करके '*' को हटा दें)

उदाहरण 14. बड़ी फ़ाइलें स्थानांतरित न करें

<पी> आप rsync –max-size विकल्प का उपयोग करके rsync को एक विशिष्ट आकार से बड़ी फ़ाइलों को स्थानांतरित न करने के लिए कह सकते हैं।

$ rsync -avz --max-size='100K' thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/
Password:
receiving file list ... done
./
Conflictname
Group
Installtid
Name
Sha1header
Sigmd5
Triggername
sent 252 bytes received 123081 bytes 18974.31 bytes/sec
total size is 45305958 speedup is 367.35
<पी> max-size=100K केवल उन फ़ाइलों को स्थानांतरित करने के लिए rsync बनाता है जो 100K से कम या उसके बराबर हैं। आप मेगाबाइट के लिए M और गीगाबाइट के लिए G इंगित कर सकते हैं।

उदाहरण 15. संपूर्ण फ़ाइल स्थानांतरित करें

<पी> rsync की एक मुख्य विशेषता यह है कि यह पूरी फ़ाइल भेजने के बजाय केवल परिवर्तित ब्लॉक को गंतव्य पर स्थानांतरित करता है।

<पी> यदि नेटवर्क बैंडविड्थ आपके लिए कोई समस्या नहीं है (लेकिन सीपीयू है), तो आप rsync -W विकल्प का उपयोग करके पूरी फ़ाइल को स्थानांतरित कर सकते हैं। इससे rsync प्रक्रिया तेज हो जाएगी, क्योंकि इसमें स्रोत और गंतव्य पर चेकसम निष्पादित करने की आवश्यकता नहीं है।

# rsync -avzW thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp
Password:
receiving file list ... done
./
Basenames
Conflictname
Dirnames
Filemd5s
Group
Installtid
Name
sent 406 bytes received 15810211 bytes 2874657.64 bytes/sec
total size is 45305958 speedup is 2.87

अतिरिक्त rsync ट्यूटोरियल

  • UNIX/Linux पर SSH के साथ Rsync कैसे सेटअप करें (पासवर्ड के बिना rsync)
  • एक्सक्लूड-फ्रॉम का उपयोग करके एकाधिक फ़ाइलों और निर्देशिकाओं को बाहर करने के लिए 6 rsync उदाहरण

  1. एंड्रॉइड में कस्टम रिंगटोन/अलार्म ध्वनि कैसे चलाएं? एंड्रॉइड में कस्टम रिंगटोन/अलार्म ध्वनि कैसे चलाएं?

    यह उदाहरण दर्शाता है कि Android में कस्टम रिंगटोन/अलार्म ध्वनि कैसे चलाएं चरण 1 - एंड्रॉइड स्टूडियो में एक नया प्रोजेक्ट बनाएं, फाइल ⇒ न्यू प्रोजेक्ट पर जाएं और एक नया प्रोजेक्ट बनाने के लिए सभी आवश्यक विवरण भरें। चरण 2 - निम्न कोड को res/layout/activity_main.xml में जोड़ें। चरण 3 - निम्न कोड क

  1. मास्टर रूबी:इच्छुक डेवलपर्स के लिए शीर्ष पाठ्यक्रम, पुस्तकें और संसाधन मास्टर रूबी:इच्छुक डेवलपर्स के लिए शीर्ष पाठ्यक्रम, पुस्तकें और संसाधन

    रूबी में कोड सीखना आपको वेब डेवलपर, सॉफ्टवेयर इंजीनियर या डेटा विश्लेषक बनने में मदद कर सकता है। पिछले कुछ वर्षों में, रूबी, एक सामान्य प्रयोजन प्रोग्रामिंग भाषा, एक मांग में रहने वाला कौशल बनी हुई है, क्योंकि प्रौद्योगिकी का उपयोग करके अधिक से अधिक एप्लिकेशन बनाए जाते हैं। यह मार्गदर्शिका रूबी को ऑ

  1. C++ में बाइनरी ट्री में दिए गए नोड का दर्पण खोजें C++ में बाइनरी ट्री में दिए गए नोड का दर्पण खोजें

    इस समस्या में हमें एक बाइनरी ट्री दिया जाता है। हमारा कार्य बाइनरी ट्री में किसी दिए गए नोड का दर्पण खोजना है। हमें एक नोड दिया जाएगा, और उस नोड की मिरर इमेज को विपरीत सबट्री में ढूंढा जाएगा। समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट आउटपुट mirror of B is E. समाधान दृष्टिकोण समस्या को हल