2009-10-21 5 views
45

मैं पर rsync का उपयोग करना चाहता हूं दोनों दिशाओं में दो निर्देशिकाओं को सिंक्रनाइज़ करें।आरएसआईएनसी: मैं दोनों दिशाओं में सिंक्रनाइज़ कैसे करूं?

मैं शास्त्रीय भावना (नहीं यह कैसे rsync पुस्तिकाओं में होती है) में तुल्यकालन का संदर्भ लें:
मैं उनमें से जो के आधार पर दोनों दिशाओं, में निर्देशिका अद्यतन करना चाहते नए है।

क्या यह rsync (लिनक्स-मार्ग में बेहतर) द्वारा किया जा सकता है?
यदि नहीं, तो अन्य समाधान क्या मौजूद हैं?

+2

मुझे विश्वास है कि http://serverfault.com/ में आपको बेहतर उत्तर मिल जाएगा सक्रिय करें उपयोग। – voyager

उत्तर

43

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

rsync -rtuv /path/to/dir_a/* /path/to/dir_b 
rsync -rtuv /path/to/dir_b/* /path/to/dir_a 

यह हटाए गए संभाल नहीं होगा, लेकिन मुझे यकीन है कि वहाँ केवल समय-समय पर sync'ing साथ कि समस्या के लिए एक अच्छा समाधान है नहीं कर रहा हूँ।

+1

चूंकि सवाल rsync के बारे में था, इसलिए मैं इस उत्तर को सही के रूप में चिह्नित करूंगा। –

+1

लेकिन आपने अन्य समाधानों के बारे में भी पूछा और यूनिसन बेहतर काम करता है, अन्यथा मैंने कभी भी एक और टूल का उल्लेख नहीं किया होगा। मैं समझता हूं कि आपके पास शायद विशिष्ट परिस्थितियां हैं जो rsync के उपयोग का पक्ष लेती हैं। – MaD70

+1

शीश, आपको 6 अपवॉट मिलते हैं और आप अभी भी शिकायत कर रहे हैं? यूनिसन वास्तव में एक दिलचस्प समाधान है, और मुझे खुशी है कि आपने इसका उल्लेख किया है। :) – jsight

45

क्या आप Unison File Synchronizer जानते हैं?

यूनिसन यूनिक्स और विंडोज के लिए फ़ाइल-सिंक्रनाइज़ेशन टूल है। यह अनुमति देता है दो फ़ाइलें और निर्देशिका का एक संग्रह की प्रतिकृतियां के लिए प्रत्येक प्रतिकृति में परिवर्तन प्रचार से, अलग मेजबान (या एक ही मेजबान पर अलग डिस्क) पर संग्रहीत करने के लिए किया जा संशोधित अलग, और फिर तारीख तक लाया अन्य। ...

यह भी ध्यान रखें कि यह विफलता के लिए लचीला है:

यूनिसन विफलता के लिए सख्त जान है। यह असामान्य समाप्ति या संचार विफलताओं के मामले में, प्रतिकृति राज्य में हर समय प्रतिकृतियां और स्वयं निजी संरचनाओं को छोड़ने के लिए सावधान है।

+0

+1। यूनिसन ऐसा करने का सबसे अच्छा तरीका है। डबल-आरएसआईएनसी सही होने के लिए मुश्किल है और बिलकुल भी संभाल नहीं करता है। – Avdi

+0

हां, यूनिसन गलती लचीला है। मैं इस पर जोर देने के लिए अपना जवाब अपडेट कर रहा हूं। – MaD70

+2

यूनिसन के बारे में नहीं सुना था। आप आज घर पर मेरी बैकअप स्क्रिप्ट को दोबारा बनाने के लिए जिम्मेदार हैं। – voyager

4

धन्यवाद jsight

rsync -urv --progress dir_a dir_b && rsync -urv --progress dir_b dir_a 

यह तुरंत हो रहा दूसरा सिंक में परिणाम होगा के बाद 1 सिंक खत्म हो गया है। यदि निर्देशिका संरचना बहुत बड़ी है, तो यह समय बचाएगा, क्योंकि किसी को पीसी से पहले बैठने की आवश्यकता नहीं है। यदि संरचना बहुत बड़ा है, वर्बोज़ और प्रगति सामान

rsync -ur dir_a dir_b && rsync -ur dir_b dir_a 
1

उपयोग rsync <OPTIONS> [hostname:]source-dir [hostname:]dest-dir

उदाहरण के लिए

निकालें:

rsync -pogtEtvr --progress --bwlimit=2000 xxx-files different-stuff 

अलग-सामान/xxx-फ़ाइलें है.अगर से समन्वयित होंगे xxx-फ़ाइलें अलग-अलग सामान/xxx-files मौजूद नहीं थे, यह इसे बनाएगा - यानी इसे कॉपी करें।

-pogtEtv - विकल्प फ़ाइल मेटाडाटा को संरक्षित करने का सिर्फ गुच्छा, प्लस वी - सुपर उपयोगी है अगर आप बड़ी फ़ाइलों

--bwlimit=2000 कॉपी - वर्बोज़ और आर - पुनरावर्ती

--progress - वास्तविक समय में सिंक कर रहा है के शो प्रगति - प्रतिलिपि/समन्वयन की अधिकतम गति सेट करता है (बीडब्ल्यू = बैंडविड्थ)

पीएस rsync महत्वपूर्ण है जब आप स्थानीय मशीन के मामले में नेटवर्क पर काम करते हैं तो आप सीपी जैसे कमांड का उपयोग कर सकते हैं।

शुभकामनाएं!

-3

अगर आप दोनों तरीकों से समन्वयित करना चाहते हैं और यह भी हटाने से फ़ाइलें इस निम्न कमांड

rsync -u -r --delete dir_a dir_b 
rsync -u -r --delete dir_b dir_a 
+2

यह dir_b में नई फ़ाइलों को हटा देगा, इसलिए केवल 'dir_b' को नई फाइलें नहीं मिलती हैं, तो इसका उपयोग करें। लेकिन उस स्थिति में, दूसरे आदेश में '--delete' शायद बेकार है। –