पसंदीदा rsync युक्तियाँ और चालें


57

मैं जितना अधिक उपयोग rsyncकरता हूं मुझे एहसास होता है कि यह फ़ाइल स्थानांतरण का एक स्विस सेना का चाकू है। यहां इतने सारे विकल्प हैं। मुझे हाल ही में पता चला है कि आप जा सकते हैं --remove-source-filesऔर इसे कॉपी किए जाने पर स्रोत से एक फ़ाइल को हटा देगा, जो कॉपी प्रोग्राम के बजाय इसे थोड़ा और अधिक स्थानांतरित कर देता है। :)

क्या आप पसंदीदा छोटे rsync युक्तियाँ और चालें हैं?

जवाबों:


19

यदि आप कई फ़ाइलों को सिंक करने के लिए rsync संस्करण 3 का उपयोग करने का प्रयास करते हैं! V3 अपनी फ़ाइल सूची को क्रमिक रूप से बनाता है और बहुत तेज़ है और संस्करण 2 की तुलना में कम मेमोरी का उपयोग करता है।

आपके प्लेटफॉर्म के आधार पर यह काफी अंतर ला सकता है। OSX संस्करण 2.6.3 में एक घंटे से अधिक समय लगेगा या दुर्घटना में 5 मिलियन फ़ाइलों का सूचकांक बनाने की कोशिश की जाएगी, जबकि संस्करण 3.0.2 मैंने संकलित किया है जो तुरंत कॉपी करना शुरू कर देता है।


वहाँ एक बात ध्यान देने वाली है कि यदि आप कुछ विकल्पों का उपयोग करते हैं ( --delete-beforeउदाहरण के लिए) पुरानी "बिल्ड लिस्ट पहले" व्यवहार का उपयोग किया जाता है क्योंकि इन विकल्पों को सही ढंग से काम करने के लिए यह आवश्यक है - इसलिए यदि आप इस व्यवहार की जांच नहीं करते हैं तो देखें आपके द्वारा उपयोग किए जा रहे अन्य विकल्प इसे संभव होने से रोकने के लिए जाने जाते हैं। यह उपयोगी हो सकता है यदि आप एक बड़े पेड़ पर इंटरस्कूल का उपयोग कर रहे हैं और प्रारंभिक स्कैन को लागू करना चाहते हैं तो --progressसटीक है (यानी "वस्तुओं की तुलना करने के लिए" गिनती कभी नहीं बढ़ेगी क्योंकि प्रारंभिक स्कैन के बाद कोई नई वस्तु नहीं मिलेगी। )।
डेविड स्पिललेट

18

--link-destअंतरिक्ष-कुशल स्नैपशॉट आधारित बैकअप बनाने के लिए उपयोग करना , जिससे आपको बैकअप डेटा (प्रत्येक बैकअप रन के लिए एक) की कई पूर्ण प्रतियां दिखाई देती हैं, लेकिन रन के बीच परिवर्तन नहीं करने वाली फाइलें नई प्रतियां सहेजने के स्थान को बनाने के बजाय हार्ड-लिंक की जाती हैं।

(वास्तव में, मैं अभी भी rysnc-followed-by-cp -al विधि का उपयोग करता हूं जो एक ही चीज को प्राप्त करता है, एक पुरानी-लेकिन-अभी भी-बहुत-अच्छी दोनों तकनीकों के नीचे चलाने के लिए http://www.mikerubel.org/ कंप्यूटर्स /rsync_snapshots/ देखें और संबंधित मुद्दे)

इस तकनीक का एक बड़ा नुकसान यह है कि अगर डिस्क त्रुटि के कारण कोई फ़ाइल दूषित है, तो यह सभी स्नैपशॉट में भ्रष्ट है जो उस फ़ाइल से लिंक करती है, लेकिन मेरे पास ऑफ़लाइन बैकअप भी है जो कि एक सभ्य सीमा तक इसकी रक्षा करेगा। दूसरी बात यह देखने के लिए है कि आपके फाइलसिस्टम में पर्याप्त इनोडेस हैं या आप उनमें से बाहर चलेंगे, इससे पहले कि आप वास्तव में डिस्क स्थान से बाहर भागें (हालांकि मुझे ext2 / 3 चूक के साथ कोई समस्या नहीं है)।

इसके अलावा, --dry-runथोड़ा स्वस्थ व्यामोह के लिए बहुत उपयोगी को कभी मत भूलना , खासकर जब आप --delete*विकल्पों का उपयोग कर रहे हों ।


6
+1 के लिए -डीआर-रन
डेविड

1
ध्यान दें कि -n के लिए शॉर्टकट है -dry-run
ctennis

3
मैं लंबे नामों के साथ रहना पसंद करता हूं, खासकर ऐसी लिपियों में जो दूसरों को बनाए रख सकती हैं। यह स्पष्ट करता है कि डॉक्स के संदर्भ के बिना क्या इरादा है।
डेविड स्पिललेट

+1 - मैंने हार्ड-लिंक्ड स्नैपशॉट के लिए --लिंक-डिस्ट विधि के साथ कई मशीनों पर कई टीबी का बैकअप समाधान लागू किया जैसा कि ऊपर वर्णित है - पूरी तरह से काम किया है।
मटका

अगर आपको --link-dest बैकअप पसंद है, तो Dirvish को देखें जो हुड के नीचे rsync का उपयोग करता है
hfs

14

यदि आपको किसी बड़ी फ़ाइल के साथ एक धीमी लिंक पर एक वेबसाइट को अपडेट करने की आवश्यकता है, तो आप इस तरह से छोटी फ़ाइलों को स्थानांतरित कर सकते हैं:

rsync -a --max-size = 100K / var / www / there: / var / www /

फिर बड़ी फ़ाइलों के लिए ऐसा करें:

rsync -a --min-size = 100K --bwlimit = 100 / var / www / वहाँ: / var / www /

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


10

जब फाइल का एक छोटा सा उप-समूह एक निर्देशिका से दूसरे स्थान पर रखने की कोशिश कर रहा हो, तो मैं --existing विकल्प का उपयोग करता हूं।


धन्यवाद! यह सिर्फ मुझे कुछ गंदा फिल्टर नियम लेखन से बचाया।
बेंज़ादो

8

--rsh मेरा है।

मैंने इसका उपयोग तेजी से कुछ करने के लिए ssh पर सिफर को बदलने के लिए किया है ( --rsh="ssh -c arcfour") इसके अलावा, सीधे बात नहीं कर सकने वाले मेजबानों के बीच फ़ाइलों को सिंक करने के लिए sshs की एक श्रृंखला स्थापित करने की सलाह देते ssh-agentहैं। ( rsync -av --rsh="ssh -TA userA@hostA ssh -TA -l userB" /tmp/foobar/ hostB:/tmp/foobar/)।


7
--time-limit

जब इस विकल्प का उपयोग किया जाता है तो rsync T मिनट के बाद बंद हो जाएगा और बाहर निकल जाएगा। मुझे लगता है कि यह विकल्प तब उपयोगी होता है जब रात (गैर-व्यस्त घंटों) के दौरान बड़ी मात्रा में डेटा का पुनर्संयोजन होता है, और फिर तब रुक जाता है जब लोगों के लिए नेटवर्क का उपयोग शुरू करने का समय होता है, दिन के दौरान (व्यस्त घंटे)।

--stop-at=y-m-dTh:m

यह विकल्प आपको rsync को रोकने के लिए किस समय निर्दिष्ट करने की अनुमति देता है।

Batch Mode

कई समान प्रणालियों में अपडेट के समान सेट को लागू करने के लिए बैच मोड का उपयोग किया जा सकता है।


उपयोगी! मैं इस प्रक्रिया को मारने से पहले "एट" कमांड का उपयोग कर रहा था
लियोनेल

स्रोत पैच: rsync.samba.org/ftp/rsync/rsync-patches-3.1.0.tar.gz ; पैच के साथ Win32 बाइनरी शामिल: itefix.no/i2/cwrsync
jftuga

2
दुर्भाग्य से ये विकल्प Redhat / Centos या Ubuntu distros के साथ वितरित rsync में उपलब्ध नहीं हैं।
22

@ लायनेल: atप्रक्रिया को मारने के लिए आप कैसे उपयोग कर रहे हैं ?
IMTheNachoMan

6

यदि आप सोच रहे हैं कि धीमी गति से चलने वाली rsync के साथ कितनी दूर हो गई है, और फ़ाइलों को सूचीबद्ध करने के लिए -v का उपयोग नहीं किया है क्योंकि वे स्थानांतरित हो जाती हैं, तो आप यह पता लगा सकते हैं कि इसमें कौन सी फाइलें खुली हैं:

 ls -l /proc/$(pidof rsync)/fd/*

जिस सिस्टम पर / खरीद है

जैसे मेरे लिए अभी rsync लटका दिया गया था, भले ही रिमोट सिस्टम में अंतरिक्ष का एक गुच्छा बचा हो। इस ट्रिक ने मुझे अप्रत्याशित रूप से विशाल फ़ाइल खोजने में मदद की, जो मुझे याद नहीं थी, जो दूसरे छोर पर फिट नहीं होगी।

इसने मुझे कुछ और रोचक जानकारी भी बताई - दूसरा छोर स्पष्ट रूप से छोड़ दिया, क्योंकि एक टूटा सॉकेट लिंक भी था:

/proc/22954/fd/4: broken symbolic link to `socket:[2387837]'

5

--archive बैकअप-जैसी नौकरियों के लिए एक मानक विकल्प (हालांकि डिफ़ॉल्ट नहीं) है, जो सुनिश्चित करता है कि स्रोत फ़ाइलों (अनुमतियों, स्वामित्व, आदि) से अधिकांश मेटाडेटा को कॉपी किया जाता है।

हालाँकि, यदि आप इसका उपयोग नहीं करना चाहते हैं, तो अक्सर आप अभी भी शामिल करना चाहते हैं --times, जो फ़ाइलों के संशोधन समय में कॉपी हो जाएगा। यह अगला rsync बनाता है जो चलता है (यह मानते हुए कि आप इसे बार-बार कर रहे हैं) बहुत तेजी से, क्योंकि rsync संशोधन समय की तुलना करता है और अपरिवर्तित होने पर फ़ाइल को छोड़ देता है। आश्चर्यजनक रूप से (कम से कम मेरे लिए) यह विकल्प डिफ़ॉल्ट नहीं है।


4

मैं जो सबसे अधिक उपयोग करता हूं वह निश्चित रूप से है --exclude-fromजो आपको एक फाइल को निर्दिष्ट करने की अनुमति देता है जिसमें चीजों को बाहर रखा जाना है।

मुझे --chmodबहुत उपयोगी लगता है क्योंकि यह आपको यह सुनिश्चित करने की अनुमति देता है कि अनुमतियाँ एक वांछित स्थिति में समाप्त होती हैं, भले ही आपका स्रोत गड़बड़ हो।


4

--backup-dir = - date +%Y.%m.%dफिर हम डिलीट कर रहे हैं लेकिन कॉपी बना रहे हैं ... बस के मामले में


4

मेरा है --inplace। काम करता है जब बैकअप के लिए सर्वर ZFS या btrfs चल रहा है और आप मूल स्नैपशॉट बनाते हैं।


3

बेशक, वहाँ भी है --deleteजो लक्ष्य से सामान निकालता है जो स्रोत में नहीं मिल सकता है।


2

cwrsync - विंडोज के लिए Rsync http://www.itefix.no/i2/node/10650

इस संस्करण में OpenSSH शामिल है ताकि आप एक सुरक्षित चैनल पर फ़ाइलों को स्थानांतरित कर सकें।


मैं cwrsync का उपयोग करता हूं, और यह बहुत अच्छा है। तो खुशी है कि किसी ने विंडोज के लिए इस भयानक क्षमता को लाया।
एंड्रयू एनस्ले जूल

2
--partial 

रुकावट के मामले में

--bwlimit=100

बैंडविड्थ को सीमित करने के लिए - बड़ी फ़ाइलों, निर्देशिकाओं को कॉपी करने के लिए अच्छा है


की इकाई क्या है bwlimit? प्रति सेकंड बिट्स, प्रति सेकंड बाइट्स?
तिमो किक्कोन ने

@ टिमो, bwlimit KBytes / सेकंड में है।
एंड्रयू फेरियर

1

यदि आपने सर्वर पर डेमॉन के रूप में rsync स्थापित किया है, तो आप किसी अन्य निर्देशिका सूची की तरह साझा किए गए मॉड्यूल को ब्राउज़ कर सकते हैं। फिर आप देख सकते हैं कि कौन से रास्ते उपलब्ध हैं और क्या नहीं।


1

जब मैं GlusterFs का उपयोग कर रहा हूं तो हमारे पास शून्य आकार के साथ टी फ़ाइलों के साथ एक अड़चन है, दुर्घटनाग्रस्त ईंट या प्रतिकृति के बीच सिंक के लिए हमें --min-size=1दुर्घटनाग्रस्त सर्वर से खाली फ़ाइल को सिंक्रनाइज़ नहीं करने के लिए उपयोग करना चाहिए

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