आपको rsync
दो बार चलाने की आवश्यकता है और मैं इसे चलाने की सलाह देता हूं -au
:
rsync -au /local/source/* /remote/destination
rsync -au /remote/destination/* /local/source
-a
(फॉर ए आर्काइव) इसके लिए एक शॉर्टकट है -rlptgoD
:
-r
उप निर्देशिकाओं में फिर से जागना
-l
इसके अलावा प्रतीकात्मक लिंक सिंक करें
-p
फ़ाइल अनुमतियों को भी सिंक करें
-t
फ़ाइल संशोधन समय भी सिंक करें
-g
फ़ाइल समूहों को भी सिंक करें
-o
फ़ाइल स्वामी को भी सिंक करें
-D
विशेष (नियमित / मेटा नहीं) फ़ाइलों को भी सिंक करें
मूल रूप से जब भी आप एक समान वन-टू-वन कॉपी का उपयोग rsync
करना चाहते हैं, तो आपको हमेशा ऐसा ही उपयोग करना चाहिए, -a
जब अधिकांश उपयोगकर्ता " सिंकिंग " के बारे में बात करने की उम्मीद करते हैं । यहां अन्य उत्तर इस बात को नजरअंदाज करते हैं कि कभी-कभी किसी फ़ाइल की सामग्री अपरिवर्तित रहती है, लेकिन इसका स्वामी बदल गया है या इसकी पहुंच अनुमतियाँ बदल गई हैं और उस स्थिति rsync
में फ़ाइल को सिंक नहीं किया जाएगा जो घातक हो सकती है।
लेकिन आपको यह भी आवश्यक -u
है कि rsync
किसी भी फ़ाइल / फ़ोल्डर को पूरी तरह से अकेला छोड़ने के लिए कहता है, अगर यह गंतव्य पर पहले से मौजूद है और इसकी नई अंतिम संशोधन तिथि है। अगर फाइल / फोल्डर नया है या नहीं, तब भी बिना -u
rsync
सिंक किए ।
कृपया ध्यान दें कि यह समाधान हटाई गई फ़ाइलों को संभाल नहीं सकता है। निम्नलिखित स्थितियों पर विचार करने के रूप में हटाए गए हैंडल को आसानी से संभव नहीं है: स्रोत पर एक फ़ाइल हटा दी गई है, अब कैसे rsync
पता चलेगा कि क्या वह फ़ाइल एक बार मौजूद है और हटा दी गई है (उस स्थिति में इसे गंतव्य पर भी हटा दिया जाना चाहिए) या क्या यह कभी भी स्रोत पर मौजूद नहीं था (उस स्थिति में इसे गंतव्य से कॉपी किया जाना चाहिए)। ये दो स्थितियां समान दिखती हैं, rsync
इसलिए यह नहीं जान सकते कि सही तरीके से कैसे प्रतिक्रिया दें। यह दूसरे तरीके के राउंड को सिंक करने में मदद नहीं करेगा क्योंकि यह उसी स्थिति को जन्म दे सकता है: एक फ़ाइल स्रोत पर मौजूद है लेकिन गंतव्य पर नहीं। क्यों? क्या यह गंतव्य पर कभी मौजूद नहीं है या इसे हटा दिया गया है? दोनों मामले समान दिखते हैं rsync
।
समन्वयन उपकरण जो हटाए गए फ़ाइलों को विश्वसनीय रूप से सिंक कर सकते हैं, आमतौर पर सभी पिछले सिंक ऑपरेशन के बारे में एक सिंक लॉग का प्रबंधन करते हैं। यदि वह लॉग बताता है कि एक बार एक फ़ाइल थी और उसे सिंक कर दिया गया था, लेकिन अब वह गायब है, तो यह स्पष्ट है कि उसे हटा दिया गया है। यदि लॉग के अनुसार ऐसी कोई फ़ाइल नहीं थी, तो उसे सिंक करना होगा। टाइमस्टैम्प के साथ सभी लॉग प्रविष्टियों को संग्रहीत करके, यह भी संभव है कि एक हटाई गई फ़ाइल वापस आती है और कई बार हटा दी जाती है फिर भी सिंक टूल को हमेशा पता चलेगा कि क्या करना है और परिणाम हमेशा सही होता है। rsync
ऐसा कोई लॉग नहीं है, यह केवल ऑपरेशन के दो पक्षों की वर्तमान फ़ाइल स्थिति पर निर्भर करता है।
हालाँकि आप स्वयं का उपयोग करके एक सिंक कमांड बना सकते हैं rsync
और थोड़ा POSIX शेल स्क्रिप्टिंग कर सकते हैं जो ऊपर वर्णित के अनुसार सिंक टूल के बहुत पहले से ही बंद हो जाता है। जैसा कि मुझे खुद इस तरह के एक उपकरण की आवश्यकता थी, यहां स्टाकेवरफ्लो पर एक जवाब है जो आपको इस तरह की स्क्रिप्ट के निर्माण के माध्यम से मार्गदर्शन करता है।