rsync के साथ द्वि-दिशात्मक सिंक


11

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

rsync -rtuv ./A/ ./B/
rsync -rtuv --delete ./B/ ./A/

इस समाधान के साथ यह समस्या है कि जब मैं rsync (B-> A) चलाता हूं जो कि rsync (AB) को चलाने के बाद सही होगा, तो सिंक के बीच में जो भी नई फाइल बनेगी वह भी हट जाएगी।

क्या कोई तरीका है जो मैं इस समय के रूप में इस समय / समय से पहले बनाई गई फ़ाइल को हटा सकता हूं।

अपडेट किया गया:

मैं समझता हूं कि एक सामंजस्यपूर्ण समाधान है, लेकिन दोनों सिरों पर स्थापित करने के लिए सामंजस्य के साथ समस्या की आवश्यकता है। मैं एक दूरस्थ सर्वर के साथ समन्वय कर रहा हूं और मैं दूरस्थ छोर पर एकसमान स्थापित नहीं कर सकता।


कुछ और उत्तरों के साथ एक समान प्रश्न है: stackoverflow.com/questions/2936627/two-way-sync-with-rsync
थॉमस

जवाबों:


4

आप ऑसिंक की कोशिश कर सकते हैं जो इस कार्य के लिए डिज़ाइन किया गया है। मैंने एक बार काम करने के लिए rsync कमांड का एक जटिल अनुक्रम सेट किया था, लेकिन मैं अब osync का उपयोग करता हूं।

https://github.com/deajan/osync

यह आंतरिक रूप से rsync का उपयोग करता है, इसलिए यह किसी भी स्थिति के लिए उपयुक्त होना चाहिए जहां आप rsync का उपयोग कर सकते हैं।


1
धन्यवाद, निशान। मैं बस अपने ही सवाल का जवाब देने वाला था। मुझे बहुत समान स्क्रिप्ट मिली जिसे bsync ( github.com/dooblem/bsync ) कहा जाता है, मूल रूप से यह पता लगाने के लिए कि व्हाट्सएप को सिंक करने के लिए अलग-अलग उपयोग होता है। चूंकि मैं सिंक में किसी भी टकराव की उम्मीद नहीं कर रहा हूं, इसलिए मैं इस स्क्रिप्ट को थोड़ा संशोधित भी करता हूं ताकि यह क्रोन जॉब के साथ चलने पर चुपचाप चले।
रज़ा

7

rsyncइस कार्य के लिए गलत उपकरण है, बिल्कुल उन कारणों के लिए जो आपने सामना किया है। इसके बजाय, उपयोग करने पर विचार करें unison:

unison A/ B/

पहली बार जब आप इसे चलाते हैं तो यह उन फ़ाइलों की पहचान करेगा जो विशिष्ट रूप से हैं A, और जो विशिष्ट रूप से अंदर हैं B। यह उन लोगों को भी चिह्नित करेगा जो दोनों स्थानों पर हैं और आपको पहचानने के लिए कहते हैं कि कौन सा ओवरराइट किया जाना है।

अगली बार जब आप इस चलाने से परिवर्तनों को कॉपी करेंगे Aकरने के लिए Bऔर भी Bकरने के लिए A, किसी भी फाइल है कि मैनुअल समाधान के लिए दोनों स्थानों में बदल दिया गया है पर चिह्नित करने।

mkdir A B
date > A/date
who > B/who
unison A/ B/
# Lots of output from unison, showing synchronisation

ls A
date    who
ls B
date    who

date > A/date
unison A/ B/
# Lots of output from unison, showing synchronisation

ऐसे कई उपयोगी झंडे उपलब्ध हैं unisonजिनके लिए मान्यताओं को परिभाषित करके प्रक्रिया को स्वचालित करने में मदद मिलती है और इस तरह सिंक्रनाइज़ेशन के दौरान आपके द्वारा पूछे गए प्रश्नों की संख्या कम हो जाती है।


3
मैंने एकसमान समाधान देखा, लेकिन इसके साथ समस्या यह है कि मुझे दोनों छोर पर स्थापित करने की आवश्यकता है। मैं एक दूरस्थ के साथ समन्वय कर रहा हूं और मैं दूरस्थ छोर पर एकसमान स्थापित नहीं कर सकता।
रज़ा

1
यह ओपी की मदद नहीं करता है, लेकिन मैं एकसमान देख रहा था । मैं देखता हूं कि डेबियन पैकेज हैं और यह ssh ट्रांसपोर्ट को सपोर्ट करता है।
टेड

1
सर्वर पर इसे स्थापित किए बिना यूनिसन का उपयोग करने की संभावनाएं हैं, इस उत्तर में टिप्पणियां देखें stackoverflow.com/a/2936711 जो i3vi3v.wordpress.com/2013/01/09/-
थॉमस

-1

क्या आप वास्तव में जरूरत है Rclone है । क्लाउड स्टोरेज (बॉक्स, ड्रॉपबॉक्स, नेक्लाउड, एफटीपी आदि) और स्थानीय भंडारण के लिए Rclone rsync है।


2
अपनी समस्या को हल करने के लिए वे रैक्लोइन को कैसे स्थापित और उपयोग करेंगे?
जेफ स्कालर

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