रुपीक्स जो समझदारी से चलता है


10

मैं अपने लैपटॉप और नेटबुक (लिनक्स के साथ ext4 का उपयोग करके) के बीच अपने घर निर्देशिकाओं को सिंक्रनाइज़ करने के लिए सफलतापूर्वक rsync का उपयोग कर रहा हूं । इसके साथ मेरी एकमात्र समस्या यह है कि हर अब और फिर मुझे कुछ निर्देशिकाओं को पूरी तरह से पुनर्गठित करना पसंद है, और rsync इसे नई फ़ाइलों के विलोपन और निर्माण के रूप में देखता है, जो इसे बहुत धीमा और अक्षम बनाता है।

क्या किसी को सॉफ्टवेयर के एक अच्छे टुकड़े के बारे में पता है जो फ़ाइल को अच्छी तरह से संभालता है?

मैंने पाया है कि यूनिसन इसके लिए सक्षम होना चाहिए, लेकिन यह व्यवहार में काम नहीं करता है। मैंने दो स्थानीय निर्देशिकाओं को सिंक्रनाइज़ करके यूनिसन का परीक्षण किया , प्रत्येक में एक बड़ी फ़ाइल के साथ, और इसने अभी भी एक विलोपन + निर्माण के रूप में मेरी चाल का पता लगाया और प्रभाव में rsync से भी धीमा था ।

इसके अलावा, अगर मुझे कुछ महीने पहले यूनिसन के स्रोत कोड को देखने से मेरी याद ठीक से आती है, तो इसने कुछ ऐसा करने की कोशिश की, जैसे कि शा sums करना- और मैं नहीं चाहता कि मेरा आदर्श समाधान sha sums करें- जो बहुत बड़े पैमाने पर धीमा हो फ़ाइलें / निर्देशिका। मुझे कुछ ऐसा चाहिए जो चीजों को नोटिस करता है जैसे:

"इस फ़ाइल का अंतिम स्रोत प्रतिरूप हटा दिया गया है और स्रोत निर्देशिका ट्री में कहीं और एक नई फ़ाइल है जिसमें समान mdate, आकार और इनोड संख्या है, इसलिए मैं बस यह मानने जा रहा हूं कि यह एक चाल थी और डिलीट + कॉपी करने के बजाय अपने लक्ष्य प्रतिपक्ष को स्थानांतरित करें। "

यह मेरे लिए महत्वपूर्ण है कि मैं इन मशीनों को जल्दी से सिंक कर सकूं।

कोई सुझाव?

जवाबों:


6

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

नवीनतम रिलीज़ पुरानी है (2009), लेकिन यह स्थिरता का संकेत है।


2
किसी ने कोशिश की कि?
धुंध

3

यूनिसन वही करता है जो आप चाहते हैं, लेकिन केवल दूरस्थ सिंक्रनाइज़ेशन के लिए। ssh://localhost/path/to/dirजड़ों में से एक के रूप में उपयोग करने का प्रयास करें ।

यूनिसन फ़ाइल सामग्री पर अपने निर्णयों को आधार बनाता है, यह इनोड नंबर का ट्रैक नहीं रखता है।


1

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

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

# Name of hidden directory
Shadow=".rsync_shadow"

# do real sync
rsync -ahHv --stats --no-inc-recursive --delete --delete-after "$Source"/ "$Target"

# update/create hidden dir of hard links in source
rsync -a --delete --link-dest="$Source" --exclude="/$Shadow" "$Source"/ "$Source/$Shadow"

# update/create hidden dir of hard links in target
rsync -a --delete --link-dest="$Target" --exclude="/$Shadow" "$Target"/ "$Target/$Shadow"

GitHub पर मेरे पास एक उदाहरण स्क्रिप्ट है । लेकिन मैं आपको सलाह देता हूं कि उत्पादन पर इस पद्धति का उपयोग करने से पहले एक बड़ी मात्रा में परीक्षण करें।


0

यदि आप कई मशीनों के बीच फ़ाइलों को सिंक्रनाइज़ करना चाहते हैं, तो आप बस एक केंद्रीयकृत संस्करण नियंत्रण प्रणाली का उपयोग कर सकते हैं जैसे कि सबवर्सन (या FSVS, जो बैकेंड के रूप में SVN का उपयोग करता है)। अच्छा हिस्सा यह है कि आपके / घर में सब कुछ (जिसे आप संस्करण नियंत्रण में जोड़ते हैं) तब संस्करणबद्ध किया जाता है और आसानी से अन्य मशीनों के साथ सिंक किया जा सकता है, या वापस रोल किया जा सकता है।


0

lsyncd ने rsync + ssh व्यवहार के साथ स्थानांतरित फ़ाइलों को भी हैंडल किया है, हालांकि कुछ छोटी गाड़ी (मैं लगभग 15% चाल को डिलीट / कॉपी के रूप में संभालता हूं, फिर भी पता लगाने के लिए क्यों)। ज्यादातर समय यह काम करता है।

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