2011-03-04 16 views
6

बदलती है मैं एक ओपन सोर्स बैकअप उपयोगिता पर काम कर रहा हूं जो फ़ाइलों का बैक अप लेता है और उन्हें विभिन्न बाहरी स्थानों जैसे अमेज़ॅन एस 3, रैकस्पेस क्लाउड फाइल्स, ड्रॉपबॉक्स और रिमोट सर्वर को एफ़टीपी/एसएफटीपी/एससीपी प्रोटोकॉल।आरएसआईएनसी एकल (संग्रह) फ़ाइल जो हर बार

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

मुझे बैकअप बनने पर क्या होता है इसके बारे में आपको त्वरित जानकारी मिलती है। असल में यह डंपिंग डेटाबेस शुरू कर देगा जैसे MySQL, PostgreSQL, MongoDB, Redis। यह फ़ाइल सिस्टम से कुछ नियमित फाइलें (छवियों की तरह) ले सकता है। एक बार सबकुछ ठीक हो जाने पर, यह सब एक ही .tar में बंडल करेगा (इसके अतिरिक्त यह gzip और openssl का उपयोग करके इसे संकुचित और एन्क्रिप्ट करेगा)।
mybackup.tar.gz.enc

अब मैं एक दूरस्थ स्थान से इस फ़ाइल को स्थानांतरित करना चाहते हैं:

एक बार है कि सभी किया है, हम चाहते हैं कि इस तरह दिखता है एक एकल फाइल की है। लक्ष्य बैंडविड्थ और भंडारण लागत को कम करना है। तो आइए मान लें कि यह छोटा बैकअप पैकेज आकार में लगभग 1GB है। इसलिए हम इसे दूरस्थ स्थान पर स्थानांतरित करने के लिए rsync का उपयोग करते हैं और स्थानीय रूप से फ़ाइल बैकअप को हटाते हैं। कल एक नई बैकअप फ़ाइल जेनरेट की जाएगी, और यह पता चला है कि पिछले 24 घंटों में बहुत अधिक डेटा जोड़ा गया है, और हम एक नई mybackup.tar.gz.enc फ़ाइल बनाते हैं और ऐसा लगता है कि हम आकार में 1.2GB तक हैं।

अब, मेरा सवाल है: क्या पिछले 24 घंटों में केवल 200MB को स्थानांतरित करना संभव है? मैं निम्न आदेश की कोशिश की:

rsync -vhP --append mybackup.tar.gz.enc backups/mybackup.tar.gz.enc

परिणाम:

mybackup.tar.gz.enc 1.20G 100% 36.69MB/एस 00:00:46 (# 1 xfer , = 0/1)

भेजा 200.01M बाइट्स
प्राप्त 849.40K बाइट्स
8.14M बाइट्स की अच्छी तरह जांच/सेकंड
कुल आकार 1.20G
speedup 2,01

sent 200.01M bytes को देखते हुए मैं कहना चाहता हूँ "जोड़कर" का डेटा ठीक से काम किया है। मैं अब क्या सोच रहा हूं कि क्या यह मौजूदा 1.2GB को मौजूदा बैकअप में कितना और जोड़ना है, या वास्तव में केवल 200MB स्थानांतरित करने के लिए स्थानांतरित कर दिया गया है? क्योंकि अगर यह पूरे 1.2GB स्थानांतरित कर दिया गया है तो मुझे नहीं लगता कि यह एक बड़ी फ़ाइलों पर scp उपयोगिता का उपयोग करने से कितना अलग है।

इसके अलावा, अगर मैं पूरा करने की कोशिश कर रहा हूं तो भी संभव है, आप किस झंडे की सिफारिश करते हैं? यदि rsync के साथ यह संभव नहीं है, तो क्या कोई उपयोगिता है जिसके बजाय आप इसका उपयोग करने की सिफारिश कर सकते हैं?

कोई भी प्रतिक्रिया बहुत सराहना की है!

उत्तर

6

यह केवल वही भेजता है जो इसे कहता है - केवल बदले गए हिस्सों को स्थानांतरित करना rsync की प्रमुख विशेषताओं में से एक है। यह कुछ rather clever checksumming algorithms का उपयोग करता है (और यह नेटवर्क पर उन चेकसम भेजता है, लेकिन यह नगण्य है - फाइल को स्थानांतरित करने से कम डेटा के आयाम के कई आदेश; आपके मामले में, मुझे लगता है कि .01200.01M में) और केवल उन हिस्सों को स्थानांतरित करता है इसकी जरूरत है।

ध्यान दें कि rsync - अर्थात् Duplicity पर आधारित पहले से ही काफी शक्तिशाली बैकअप टूल हैं। आपके कोड के लाइसेंस के आधार पर, यह देखने के लिए उपयुक्त हो सकता है कि वे यह कैसे करते हैं।

+0

उत्तर के लिए धन्यवाद। हाँ मैं थोड़ा अनिश्चित था क्योंकि बैकअप मैं हर बार उत्पन्न करता हूं एक पूरी तरह से नई फाइल है। सभी डेटाबेस फिर से डंप किए जाते हैं, छवियों को फिर से इकट्ठा किया जाएगा, और इसे एक __new__ 'mybackup.tar.gz.enc' में जोड़ा जाएगा। चूंकि यह फ़ाइल मूल रूप से एक ** पूरी नई फ़ाइल है ** मुझे इस तरह के संदेह थे कि यह समझ में नहीं आ सकता है, या एल्गोरिदम या कुछ तोड़ सकता है। लेकिन हाँ आप एक बिंदु है। आपकी प्रतिक्रिया के लिए धन्यवाद! –

+0

@ माइकल वैन रुइजेन: इससे कोई फर्क नहीं पड़ता कि यह नया है या नहीं, आपके पास स्थानीय और दूरस्थ फ़ाइल वाली फ़ाइल के बीच * अंतर * क्या हैं। चूंकि डेटाबेस डंपिंग की प्रक्रिया निश्चित है, उसी डेटाबेस के विभिन्न डंपों में काफी आम होगा। – Piskvor

+0

दाएं। जब मैं सब कुछ पैकेज करता हूं तो मैं एक .tar फ़ाइल में बंडल करता हूं, यह वास्तव में केवल एक फ़ाइल के लिए कुछ 'केबी' भेजता है जो वास्तव में '3.5 एमबी' है। हालांकि, एक बार जब मैं 'GZip' के साथ फ़ाइल को संपीड़ित करता हूं तो यह फिर से '2MB' भेजना शुरू कर देगा। इसलिए जब स्थानांतरित की गई राशि अभी भी कम हो गई है, ऐसा लगता है कि आरएसआईएनसी को संपीड़ित बैकअप से निपटने में कठिन समय है। मुझे लगता है कि यह एन्क्रिप्शन के साथ समान है। तो मुझे शायद इसे '.tar' और RSync पर रखना होगा। आपकी सहायताके लिए धन्यवाद! –

8

जीजीआईपी की प्रकृति ऐसी है कि स्रोत फ़ाइल में छोटे बदलावों के परिणामस्वरूप संपीड़ित फ़ाइल में बहुत बड़े बदलाव हो सकते हैं - जीजीआईपी आपके द्वारा दिए गए डेटा को संपीड़ित करने के सर्वोत्तम तरीके के बारे में हर बार अपना निर्णय लेगा।

gzip के कुछ संस्करणों --rsyncable स्विच जो ब्लॉक आकार है कि rsync के रूप में एक ही करने के लिए पर काम करता है gzip, जो एक से थोड़ा कम कुशल संपीड़न में जो परिणाम (ज्यादातर मामलों में) सेट लेकिन करने के लिए उत्पादन फ़ाइल में परिवर्तन को सीमित करता है स्रोत फ़ाइल में परिवर्तन के रूप में आउटपुट फ़ाइल का एक ही क्षेत्र।

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

+0

FWIW 'rsync' में,' -z' स्थानांतरण के दौरान फ़ाइल डेटा को संपीड़ित करेगा। शायद कुछ मामलों में जो आगे बढ़ने का विकल्प हो सकता है ... – rogerdpack

1

नया rsync - अगर आपके मौजूदा डेटा में कोई बदलाव हो तो आपकी फ़ाइल सामग्री होगी! (3.0.0 के बाद से)

+0

क्या आपके पास इसका विस्तार करने के लिए एक लिंक है? क्या आप इस तथ्य का जिक्र कर रहे हैं कि यह फ़ाइल के अंत में डेटा जोड़कर फ़ाइल को अद्यतन करने के लिए rsync का कारण बनता है, जो मानता है कि प्राप्त करने वाले पक्ष पर पहले से मौजूद डेटा डेटा भेजने की तरफ फ़ाइल की शुरुआत के समान है। ' – rogerdpack

संबंधित मुद्दे