Rsync विरोधों को कैसे हल करता है?


14

क्या होगा अगर मशीन ए और मशीन बी शेयरों में पहले से सिंक के माध्यम से एक निर्देशिका है rsync, और ए एक फ़ाइल को बदलता है और बी एक ही फ़ाइल को बदलता है, और आप rsyncए से बी?

यह शायद एक मर्ज संघर्ष की तरह कुछ भी है git?

क्या संघर्ष को आसानी से सुलझाया जा सकता है?

जवाबों:


25

Rsync संघर्षों को हल करने की कोशिश नहीं करता है। यह इसका काम नहीं है। Rsync के पास यह पता लगाने का भी तरीका नहीं है कि दोनों पक्षों ने फ़ाइल को संशोधित किया है, क्योंकि इसमें किसी भी सामान्य पूर्वज के बारे में कोई जानकारी नहीं है।

डिफ़ॉल्ट विकल्पों के साथ, स्रोत फ़ाइल को बिना गंतव्य के गंतव्य पर अधिलेखित किए बिना गंतव्य पर कॉपी किया जाता है। विकल्प के साथ -u, स्रोत फ़ाइल की प्रतिलिपि तभी बनाई जाती है जब गंतव्य फ़ाइल अनुपलब्ध हो या स्रोत फ़ाइल से पुरानी हो। विकल्प के साथ --ignore-existing, गंतव्य फ़ाइल मौजूद नहीं होने पर स्रोत फ़ाइल की प्रतिलिपि बनाई जाती है।

यदि आप संघर्षों का पता लगाना चाहते हैं, तो आपको एक ऐसे उपकरण की आवश्यकता होती है, जो फ़ाइलों के अंतिम सिंक्रनाइज़ होने पर जागरूक हो, ताकि यह {गंतव्य = पुराने संस्करण, स्रोत = नए संस्करण} को {गंतव्य = नए संस्करण 1, स्रोत = नए संस्करण 2 से अलग कर सके। }। Unison का प्रयोग करें , जो ठीक यही करता है। यूनिसन एक द्विदिश सिंक्रोनाइज़र है: यह उस फ़ाइल को कॉपी करता है जिसे अंतिम सिंक्रनाइज़ेशन के बाद उस तरफ संशोधित किया गया है जहाँ फ़ाइल को संशोधित नहीं किया गया है। यदि किसी पक्ष को संशोधित नहीं किया गया है, या यदि दोनों पक्षों को पहचान के साथ संशोधित किया गया है, तो यह कुछ भी नहीं करता है। यदि दोनों पक्षों को अलग-अलग तरीकों से संशोधित किया गया है, तो यह आपको बताता है और आपको स्किप करने, एक दिशा में कॉपी या दूसरी दिशा में कॉपी करने देता है।

यदि आप स्वचालित संघर्ष समाधान चाहते हैं, तो स्वचालित मर्ज (जब संभव हो - हमेशा ऐसे मामले होते हैं जहां एक मैनुअल मर्ज आवश्यक है), एक नियंत्रण नियंत्रण प्रणाली जैसे कि गिट का उपयोग करें।

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