कैसे एक कुशलता से S3 का उपयोग कर सकते हैं फ़ाइलों को बढ़ाने के लिए?


42

मैं समझता हूं कि rsync उच्च-स्तर पर कैसे काम करता है, लेकिन इसके 2 पक्ष हैं। S3 के साथ बोलने के लिए कोई डेमॉन नहीं है - अच्छी तरह से वहाँ है, लेकिन यह मूल रूप से सिर्फ HTTP है।

वहाँ कुछ दृष्टिकोण हो।

s3rsync (लेकिन यह सिर्फ rsync से s3 पर बोल्ट करता है)। सीधा। मुझे यकीन नहीं है कि मैं किसी तीसरी पार्टी पर निर्भर रहना चाहता हूं। मैं s3 को सिर्फ rsync का समर्थन करना चाहता हूं।

कुछ rsync 'क्लोन' भी हैं जैसे कि डुप्लिकेट के बिना s3 का समर्थन करने का दावा करने वाले दोहरेपन। लेकिन यह ऐसा कैसे कर सकता है? क्या वे स्थानीय रूप से एक इंडेक्स फ़ाइल रख रहे हैं? मुझे यकीन नहीं है कि यह कैसे कुशल हो सकता है।

मैं स्पष्ट रूप से s3 का उपयोग करना चाहता हूं क्योंकि यह सस्ता और विश्वसनीय है, लेकिन ऐसी चीजें हैं जो rsync के लिए उपकरण है, जैसे कि छवियों की एक विशाल निर्देशिका का समर्थन करना।

यहां क्या विकल्प हैं? मैं rsync + s3rsync + s3 के बजाय अनुलिपि + s3 का उपयोग करके क्या खोता हूं?


4
S3 सस्ता है? यह मुझे खबर है। विश्वसनीय? यकीन के लिए, लेकिन सस्ते नहीं।
EEAA

5
वैसे, s3 $ 0.13 / gb या इससे कम है क्योंकि आप अधिक स्टोर करते हैं या कम अतिरेक चाहते हैं। एक त्वरित खोज rsync भंडारण के लिए evbackup.com का खुलासा करती है । बहुत अधिक महंगा है। क्या सस्ता है और कुछ हद तक अतिरेक है?
जैमी सिरोविच

अगर मैं rsync डिजाइन करने के लिए था, तो यह प्लगइन्स का समर्थन करेगा ताकि नए प्रोटोकॉल (जैसे s3: //) को जोड़ा जा सके। हालाँकि, वर्तमान में, rsync इसका समर्थन नहीं करता है, इसलिए मुझे विश्वास नहीं है कि rsync का उपयोग सीधे S3 तक करने के लिए किया जा सकता है।
एडवर्ड फाक

अगला मुद्दा यह है कि मुझे नहीं लगता है कि S3 स्टोर मेटाडेटा जैसे कि स्वामित्व या अनुमतियां हैं, इसलिए बैकअप करने के लिए "aws s3 सिंक" का उपयोग करके काम करेगा, लेकिन शायद यूनिक्स फाइल सिस्टम के पूर्ण-विकसित बैकअप के लिए उपयुक्त नहीं है, क्योंकि पुनर्स्थापना पर बहुत अधिक डेटा खो जाएगा। मुझे भी लगता है कि सहानुभूति, हार्डलिंक और अन्य विशेष फाइलें खो जाएंगी।
एडवर्ड फाल

जवाबों:


39

चूँकि इस प्रश्न का अंतिम उत्तर था, एक नया एडब्ल्यूएस कमांड लाइन टूल है aws

यह स्थानीय भंडारण और s3 के बीच, rsync- जैसे सिंक कर सकता है । उदाहरण का उपयोग:

aws s3 sync s3://mybucket /some/local/dir/

यदि आपके सिस्टम का पायथन वातावरण ठीक से सेट है, तो आप AWS क्लाइंट का उपयोग करके इंस्टॉल कर सकते हैं pip:

pip install awscli

1
मेरे अनुभव में, यह सब कुछ अपलोड करता है, केवल परिवर्तनों का डेल्टा नहीं। उदाहरण के लिए, मैं एक स्थिर साइट को एक dev सर्वर के साथ धकेल रहा था rsync, और इसमें औसतन 1 सेकंड का समय लगा, बस मेरे धीमे कनेक्शन पर बदलाव हो रहे थे। aws s3 syncदूसरी ओर, लगभग 5 मिनट का समय लिया, प्रत्येक फ़ाइल को पुनःप्राप्त किया।
रिब्रेड

2
मेरा मानना ​​है कि यह काम नहीं करता है, लेकिन डॉक्स का कहना है कि "एक स्थानीय फ़ाइल को अपलोड करने की आवश्यकता होगी यदि स्थानीय फ़ाइल का आकार s3 ऑब्जेक्ट के आकार से अलग है, तो स्थानीय फ़ाइल का अंतिम संशोधित समय नए की तुलना में नया है s3 ऑब्जेक्ट का अंतिम संशोधित समय, या स्थानीय फ़ाइल निर्दिष्ट बाल्टी और उपसर्ग के तहत मौजूद नहीं है। " सुनिश्चित करें कि आपके पास aws-cli का नवीनतम संस्करण है - यदि आप इसे पुन: पेश कर सकते हैं, तो गीथब पर उनके साथ एक बग दर्ज करें। कुछ समय पहले जब मैंने बग दर्ज किया था तो वे उत्तरदायी थे।
डैन प्रिट्स

कमांड होनी चाहिए: aws s3 सिंक / कुछ / लोकल / dir / s3: // mybucket
कार्लो एस

1
कार्लोस, मुझे यकीन नहीं है कि आपकी बात क्या है। यदि आप यह सुझाव देना चाहते हैं कि मेरा उदाहरण कमांड गलत है, तो हम दोनों सही हैं। S3 सिंक दोनों दिशाओं में काम कर सकता है।
दान प्रिट्स

पार्टी के लिए देर से, लेकिन यहाँ क्या हो रहा है: S3 में अपलोड करते समय, त्वरित जांच नियम लागू होते हैं (यदि आकार या दिनांक बदल गया है तो अपलोड करें)। जब डाउनलोड करने , वहाँ कोई त्वरित जांच नियम हैं, और सब कुछ बिना शर्त डाउनलोड किया जाता है।
एडवर्ड फॉक

16

S3cmd उपकरण के लिए एक महान है syncविकल्प। मैं इसका उपयोग स्थानीय बैकअप को सिंक करने के लिए करता हूँ, जैसे कुछ:

s3cmd sync --skip-existing $BACKUPDIR/weekly/ s3://MYBACKUP/backup/mysql/

इसका --skip-existingमतलब यह है कि यह चेकसम की कोशिश नहीं करता है कि वह मौजूदा फाइलों की तुलना करे। यदि पहले से ही उस नाम की कोई फ़ाइल है, तो यह जल्दी से इसे छोड़ देगा और आगे बढ़ जाएगा। ऐसा --delete-removedविकल्प भी है, जो स्थानीय रूप से मौजूद फ़ाइलों को नहीं हटाएगा, लेकिन मैं S3 को यहां तक ​​रखना चाहता हूं कि मैंने स्थानीय रूप से सफाई की है इसलिए मैं इसका उपयोग नहीं करता हूं।


5

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

मैं डुप्लिकेट और s3 का उपयोग करता हूं, यह ठीक है लेकिन सीपीयू गहन है। लेकिन यह वृद्धिशील बैकअप करता है। किसी आपात स्थिति में जब आप किसी dir या विशेष फ़ाइल को पुनर्स्थापित करना चाहते हैं, क्योंकि यह पिछले wednesday था, या पिछले जनवरी में, उसी विभाजन पर अन्य फ़ाइलों को पुनर्स्थापित किए बिना आपको वृद्धिशील बैकअप और एक उपकरण की आवश्यकता होती है जहां आप अपनी ज़रूरत के अनुसार फ़ाइलों का अनुरोध कर सकते हैं।

मेरे पास एक क्रोन है, जो हर एक्स महीने में पूरा करता है, अन्यथा वृद्धिशील और पुराने महीनों को हटाकर s3 स्टोरेज योग को नीचे रखता है, अंत में संग्रह की स्थिति बनाता है इसलिए मैं हर सुबह स्टेटस के साथ मेल करता हूं। आपको नियमित रूप से इस पर नज़र रखने की आवश्यकता है ताकि आप ध्यान दें कि जब आपका बैकअप काम नहीं कर रहा है।

यह स्थानीय हस्ताक्षर रखने के लिए महत्वपूर्ण स्थानीय अस्थायी स्थान की आवश्यकता होती है ताकि अस्थायी dir को ध्यान से सेटअप करें। यह बैकअप / mnt, अंदर विभिन्न dirs को छोड़कर / mnt। यह डेटा के बैकअप के लिए अच्छा है, सिस्टम विभाजन के लिए अमेज़ॅन इमेजिंग या स्नैपशॉट टूल का उपयोग करें।

PHP स्क्रिप्ट:

# Duplicity Backups

$exclude  = "--exclude /mnt/ephemeral ".
            "--exclude /mnt/logs ".
            "--exclude /mnt/service ".
            "--exclude /mnt/mail ".
            "--exclude /mnt/mysql ";

$key = "PASSPHRASE=securegpgpassphrase";

$tmp = "/mnt/mytempdir";

system("mkdir -p $tmp");

# Amazon

$aws = "AWS_ACCESS_KEY_ID=xxxxxx ".
       "AWS_SECRET_ACCESS_KEY=xxxxxx ";

$ops = "-v5 --tempdir=$tmp --archive-dir=$tmp --allow-source-mismatch --s3-european-buckets --s3-use-new-style --s3-use-rrs";
$target = " s3://s3-eu-west-1.amazonaws.com/mybucket";

# Clean + Backup

system("$key $aws /usr/bin/duplicity $ops --full-if-older-than 2M $exclude /mnt $target");
system("$key $aws /usr/bin/duplicity $ops remove-older-than 6M --force $target");
system("$key $aws /usr/bin/duplicity $ops cleanup --force --extra-clean $target");
system("$key $aws /usr/bin/duplicity $ops collection-status $target")

1
S3 बाल्टी के लिए संस्करण को चालू करें, फिर यह पुरानी प्रतियों को रखेगा
mcmillab

3

S3 एक सामान्य उद्देश्य ऑब्जेक्ट स्टोरेज सिस्टम है जो आपको यह डिजाइन करने के लिए पर्याप्त लचीलापन प्रदान करता है कि आप इसका उपयोग कैसे करना चाहते हैं।

मुझे आपके प्रश्न (rsync के अलावा अन्य) या '3rd पार्टी' टूल के साथ आने वाले मुद्दों के बारे में निश्चित नहीं है।

यदि आपके पास अच्छी तरह से संरचित फ़ाइलों का बड़ा सेट है, तो आप अपने उप-फ़ोल्डर्स पर कई s3 सिंक चला सकते हैं।

अमेज़न पर अच्छे लोग आपको S3 या EBS - http://aws.amazon.com/importexport/ पर बड़ी फ़ाइल स्थानांतरण के लिए अपने पोर्टेबल हार्डड्राइव से एक आयात / निर्यात करने की अनुमति देते हैं, जिसका उपयोग आप पहले अपलोड के लिए कर सकते हैं।

अमेज़न s3 सर्वोत्तम प्रथाओं को यहाँ देखें - http://aws.amazon.com/articles/1904

जहाँ तक विभिन्न उपकरण हैं, उन्हें आज़माएँ और देखें कि आपके लिए सबसे अच्छा काम क्या है। मूल्य निर्धारण के बारे में, यदि आपकी आवश्यकताओं के अनुरूप है तो अतिरेक मूल्य निर्धारण कम हो गया है - http://aws.amazon.com/s3/pricing/

सामान्य सिफारिश - एक तेज मल्टीकोर सीपीयू और अच्छा नेटवर्क पाइप है।

अद्यतन: S3 पर चेकसमिंग के बारे में उल्लेख करें

प्रमुख मूल्य जोड़े में S3 स्टोर डेटा के बारे में और निर्देशिकाओं की कोई अवधारणा नहीं है। S3sync चेकसम की पुष्टि करता है (S3 के पास सत्यापन के लिए हेडर के रूप में चेकसम भेजने के लिए एक तंत्र है - सामग्री-एमडी 5 हेडर)। सर्वोत्तम प्रथाएं डेटा इंटीग्रिटी भाग को लिंक करती हैं, जिसमें यह विस्तार से है। S3 आपको चेकसम को भेजने / सत्यापित करने और पुनः प्राप्त करने की अनुमति देता है। वहाँ बहुत से लोग दोहराव के साथ वृद्धिशील बैकअप कर रहे हैं। हालांकि S3 में कोई rsync नहीं चल रहा है, फिर भी आप चेकसम कर सकते हैं जैसे मैंने यहाँ बताया है।

rsync एक सिद्ध उपकरण है और अधिकांश आधुनिक उपकरण समान एल्गोरिथ्म या rsync लाइब्रेरी का उपयोग करते हैं या rsync को बाहरी रूप से कॉल करते हैं।


1
मैं यह नहीं देखता कि यह सवाल का जवाब कैसे देता है। मैं पूछ रहा था कि कैसे अनुलिपि दूसरी तरफ एक डेमॉन के बिना rsync करता है। यह भी एक चेकसम प्राप्त करने की क्षमता नहीं है, या शायद यह करता है, लेकिन फिर यह फ़ाइलों को कैसे बढ़ाएगा?
Jaimie Sirovich

ठीक। तो आप कह रहे हैं कि डुप्लिकेट इस हैश का उपयोग S3 से करता है, लेकिन यह FTP पर काम करने का भी दावा करता है। एफ़टीपी में कोई हैशिंग तंत्र नहीं है। मैं सुरक्षित पक्ष पर गलती करता हूं और 'सिद्ध' टूल का उपयोग करता हूं। Rsync हाँ साबित हुआ है, लेकिन यह s3 ऐड-ऑन सेवा s3rsync के बिना s3 बैकअप नहीं करेगा। मैं डुप्लिकेट से थोड़ा डरता हूं, लेकिन इसमें व्यापक प्रोटोकॉल अपील है अगर मुझे एस 3 के साथ rsync जैसी कार्यक्षमता का कुछ स्तर मिल सकता है, जो कि सहायक सेवा के बिना है। मुझे अभी नहीं पता है कि यह कितनी अच्छी तरह से काम करता है (और संभवतः विभिन्न प्रोटोकॉल के साथ अलग तरह से)। एफ़टीपी सिंकिंग कैसे करता है? :)
Jaimie Sirovich

@JaimieSirovich इसका परीक्षण करें और देखें। यदि आपके पास था, तो आप जानते होंगे कि डुप्लिकेटिटी कम समय में "मैनिफ़ेस्ट" फ़ाइलों का निर्माण करती है, क्योंकि आपको इन सभी टिप्पणियों को टाइप करने के लिए लिया गया है जो यह कर सकती हैं।
सियजयोज

3

आप वैकल्पिक रूप से मिनियो क्लाइंट उर्फ एमसी का उपयोग कर सकते हैं 'एमसी दर्पण' कमांड का उपयोग काम करेगा।

$ mc mirror share/sharegain/ s3/MyS3Bucket/share/sharegain 
  • mc: मिनीओ क्लाइंट
  • share / sharegain: स्थानीय निर्देशिका
  • s3: https://s3.amazonaws.com के लिए उपनाम
  • MyS3Bucket: मेरा रिमोट S3 बाल्टी है
  • share / sharegain: s3 पर मेरी वस्तु

आप क्रोनजोब के रूप में एक सरल स्क्रिप्ट लिख सकते हैं जो आवधिक अंतराल पर एक सिंक रखेगा।

आशा है ये मदद करेगा।


-wअब एक ध्वज भी है , जिसका उपयोग fsnotifyपरिवर्तनों को देखने के लिए किया जाएगा । इसे आसानी से सिस्टम सेवा या समान के रूप में स्थापित किया जा सकता है।
आलकर

2

मुझे यकीन नहीं है कि सच rsync अमेज़न के लिए एक अच्छा फिट है।

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

अमेज़ॅन के लिए यह दो समस्याएं पैदा करता है कि बहुत सारी हैश को इंटरनेट पर भेजना पड़ता है और यह उन सभी हैश की गणना करने के लिए प्रसंस्करण शक्ति लेता है जो अमेज़ॅन की लागत में वृद्धि करेंगे - शायद यही कारण है कि वे इसे तीसरे पक्ष के प्रदाताओं को छोड़ सकते हैं जो कर सकते हैं उस सुविधा के लिए अतिरिक्त शुल्क लें।

क्लोन के लिए, वे स्पष्ट रूप से कहीं और हैश का भंडारण कर रहे हैं और कहीं-कहीं क्लोन के आधार पर भिन्न हो सकते हैं। उनके लिए यह संभव होगा कि वे अमेज़ॅन पर एक अलग वस्तु के रूप में या अमेज़न पर संग्रहीत डेटाबेस के रूप में हैश को स्टोर कर सकें या वे उन्हें स्थानीय और दूर से स्टोर कर सकें।

इसे करने के फायदे और फायदे हैं। यदि अलग-अलग फ़ाइलों में हैश को दूर से संग्रहीत किया जाता है, तो उन्हें लगातार पुनर्प्राप्त करना महंगा हो सकता है। यदि किसी डेटाबेस में हैश को दूरस्थ रूप से संग्रहीत किया जाता है, तो यह डेटाबेस बड़ा हो सकता है और उन्हें लगातार पुनर्प्राप्त करना और उन्हें अपडेट करना महंगा हो सकता है। यदि हैश स्थानीय रूप से संग्रहीत किया जाता है, तो यह लागत को कम करने में मदद करता है, लेकिन अन्य जटिलताओं और समस्याओं का परिचय देता है।

(बेशक अमेज़ॅन के पास अन्य सेवाएं हैं, इसलिए अमेज़ॅन डीबी में एक डेटाबेस रखना संभव होगा)

एक उदाहरण के रूप में, मैंने कई साल पहले एक शुरुआती rsync क्लोन की कोशिश की। यह अमेज़ॅन के मूल्य निर्धारण संरचना को ध्यान में रखने के लिए नहीं लिखा गया था और प्रत्येक ब्लॉक के हैश को पुनः प्राप्त करने के लिए बहुत सारे http जारी कर रहा था और चूंकि प्रत्येक को अमेज़ॅन चार्ज मिलता था, इसका मतलब था कि मेरे बिल का भंडारण हिस्सा तेजी से गिर गया था, स्थानांतरण हिस्सा फूल।

मैं rsync + s3rsync + s3 के बजाय अनुलिपि + s3 का उपयोग करके क्या खोता हूं?

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


0

इस सूत्र में वर्णित कई विकल्पों की तुलना करने के बाद मैंने S3fs के लिए जाने का फैसला किया। यह आपको स्थानीय फाइल सिस्टम के रूप में S3 को माउंट करने की अनुमति देता है। आप तब आगे बढ़ सकते हैं और rsync का उपयोग कर सकते हैं जिस तरह से आप पहले से ही जानते हैं।

आरंभ करने के लिए यह एक अच्छा ट्यूटोरियल है: Rsync के साथ Amazon S3

लेखक ने पहले उल्लेख किए गए s3sync का उपयोग किया था, लेकिन फिर S3Fs के साथ विकल्प पर स्विच किया। मुझे यह पसंद है क्योंकि मेरे पास अन्य बैकअप फ़ोल्डर भी हैं जो स्थानीय रूप से SSHFS के माध्यम से माउंट किए जाते हैं।


12
खतरे में, विल रॉबिन्सन! यह वास्तव में महंगा है क्योंकि आपको rsync कम-बैंडविड्थ संचार का कोई लाभ नहीं मिल रहा है --- s3fs पूरी फाइल को पढ़ना (और फिर लिखना, अगर यह बदल जाता है) समाप्त हो जाएगा, जिसका मतलब है कि अमेज़ॅन आपको दो बार बिल देगा। इसके बजाय एक EC2 उदाहरण का उपयोग करने और ssh के माध्यम से दूरस्थ रूप से rsync का उपयोग करने पर विचार करें। एक EC2 इंस्टेंस से S3 में ट्रांसफ़र मुफ्त होते हैं, इसलिए आप सभी अपने स्थानीय मशीन से EC2 इंस्टेंस पर rsync के कम-बैंडविड्थ संचार के लिए भुगतान करते हैं। मांग पर EC2 माइक्रो इंस्टेंस चलाना व्यावहारिक रूप से कुछ भी नहीं है।
डेविड

2
इस! वहाँ उन लोगों के लिए बहुत बुरी सलाह है जो rsync और S3 को नहीं समझते हैं ...
Mark

इसका एक नकारात्मक पहलू यह है कि अब आपके पास प्रबंधन करने के लिए एक सूक्ष्म उदाहरण है। तुच्छ यदि आप जानते हैं कि कैसे, लेकिन कई के लिए प्रवेश के लिए एक बाधा। प्लस साइड पर, ईसी 2-संलग्न ईबीएस स्टोरेज एस 3 के प्रति बाइट का लगभग आधा मूल्य है।
दान प्रिट्स

@DavidGiven क्या होगा अगर मैंने rysnc का उपयोग किए बिना आरोहित s3fs को सीधे लिखा और फिर जीवनचक्र के माध्यम से दीर्घायु प्रबंधित किया?
फॉरेथिंकर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.