जो वेबसाइट बैकअप के लिए बेहतर है - rsync या git पुश


16

मैं आपदा वसूली उद्देश्यों के लिए विभिन्न प्रदाताओं में 2 LAMP वेब सर्वर चलाता हूं - एक उच्च शक्ति वाला लाइव सर्वर और एक कम शक्ति वाला बैकअप सर्वर।

वर्तमान में मैं लाइव सर्वर से बैकअप सर्वर पर हर 4 घंटे में एक बार rsync करता हूं।

यह ठीक काम करता है, लेकिन स्पाइक सिस्टम लोड करता है जबकि rsync आंकड़े बाहर निकलते हैं कि कौन सी फाइलें बदल गई हैं।

चूँकि सभी वेबसाइट git रिपॉजिटरी में भी रहती हैं, मैं सोच रहा हूँ कि क्या git पुश एक बेहतर बैकअप तकनीक होगी।

मुझे git रेपो में लाइव अपलोड फ़ोल्डर शामिल करना होगा; और फिर बैकअप प्रक्रिया होगी:

live$ git add .
live$ git commit -a -m "{data-time} snapshot"
live$ git push backup live_branch

और फिर हर पुश पर चेकआउट करने के लिए बैकअप सर्वर पर एक पोस्ट कमिट हुक होता है।

प्रत्येक वेबसाइट का आकार 50M से 2GB तक होता है। मैं लगभग 50 अलग-अलग गिट रिपोज के साथ समाप्त होता हूं।

यह rsync की तुलना में "बेहतर" समाधान है?

  • क्या गणना में बेहतर है कि कौन सी फाइलें बदल गई हैं?
  • Git धक्का अधिक कुशल है कि rsync
  • मैं क्या भूल गया हूँ?

धन्यवाद!

---- कुछ तुलना परीक्षणों से डेटा ------

1) 52MB फोल्डर फिर एक नया 500k फोल्डर (मुख्य रूप से टेक्स्ट फाइल्स) जोड़ना

rsync

sent 1.47K bytes  received 285.91K bytes  
total size is 44.03M  speedup is 153.22

real    0m0.718s    user    0m0.044s    sys     0m0.084s

Git

Counting objects: 38, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (37/37), done.
Writing objects: 100% (37/37), 118.47 KiB, done.
Total 37 (delta 3), reused 0 (delta 0)

real    0m0.074s     user   0m0.029s    sys     0m0.045s

2) 1.4G फोल्डर फिर एक नया 18M फोल्डर (मुख्य रूप से चित्र) जोड़ना

rsync

sent 3.65K bytes  received 18.90M bytes
total size is 1.42G  speedup is 75.17

real    0m5.311s    user    0m0.784s    sys     0m0.328s

Git

Counting objects: 108, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (106/106), done.
Writing objects: 100% (107/107), 17.34 MiB | 5.21 MiB/s, done.
Total 107 (delta 0), reused 0 (delta 0)

real    0m15.334s    user   0m5.202s    sys     0m1.040s

3) 52M फोल्डर फिर एक नया 18M फोल्डर (मुख्य रूप से चित्र) जोड़ना

rsync

sent 2.46K bytes  received 18.27M bytes  4.06M bytes/sec
total size is 62.38M  speedup is 3.41

real    0m4.124s    user    0m0.640s    sys     0m0.188s

Git

Counting objects: 108, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (106/106), done.
Writing objects: 100% (107/107), 17.34 MiB | 5.43 MiB/s, done.
Total 107 (delta 1), reused 0 (delta 0)

real    0m6.990s    user    0m4.868s    sys     0m0.573s

4) 1.4G फोल्डर फिर एक नया 500k फोल्डर (मुख्य रूप से टेक्स्ट) जोड़ना

rsync

sent 2.66K bytes  received 916.04K bytes  612.47K bytes/sec
total size is 1.42G  speedup is 1547.14

real    0m1.191s    user    0m0.180s    sys     0m0.268s

Git

Counting objects: 49, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (48/48), done.
Writing objects: 100% (48/48), 177.90 KiB, done.
Total 48 (delta 3), reused 0 (delta 0)

real    0m1.776s    user    0m0.390s    sys     0m0.497s

5) 1.4G फ़ोल्डर - कोई परिवर्तन नहीं

rsync

sent 1.72K bytes  received 716.44K bytes  287.26K bytes/sec
total size is 1.42G  speedup is 1979.18

real    0m1.092s    user    0m0.168s    sys     0m0.272s

Git

nothing to commit (working directory clean)

real    0m0.636s    user    0m0.268s    sys     0m0.348s

5) 52M फ़ोल्डर - कोई परिवर्तन नहीं

rsync

sent 528 bytes  received 88.40K bytes  59.29K bytes/sec
total size is 62.38M  speedup is 701.41

real    0m0.779s    user    0m0.044s    sys     0m0.144s

Git

nothing to commit (working directory clean)

real    0m0.156s    user    0m0.057s    sys     0m0.097s

3
क्या एक "अच्छा rsync" के बारे में? सिस्टम लोड स्पाइकिंग वास्तव में वही है जो आप चाहते हैं: AFAP प्रक्रिया को समाप्त करें, और यह ठीक है जब तक यह वेबसाइट के संचालन में हस्तक्षेप नहीं करता है।

1
धन्यवाद - मैं पहले से ही एक "अच्छा rsync" कर रहा हूँ, जो मदद करता है
डेविड लैंग

जवाबों:


4

वास्तव में मैं दोनों के संतुलित मिश्रण का उपयोग करने का सुझाव दूंगा। आपका मुख्य बैकअप हर रात (कम से कम) जीआईटी के लिए प्रतिबद्ध होना चाहिए। इसे सप्ताह में एक या दो बार किसी अन्य मशीन से सिंक करें जिसे rsync का उपयोग करके उत्पादन बॉक्स से बहुत दूर रखा गया है।

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

अंगूठे का नियम: जब बैकअप और आपदा वसूली की बात आती है, तो कुछ भी आपको 100% वसूली देने की गारंटी नहीं दे सकता है।


2

रुंटस एक अद्भुत सिंक टूल है, लेकिन सर्वर (एस) पर जीआईटी चलाने के दौरान आपको बहुत अधिक बहुमुखी प्रतिभा मिलती है, और pushआईएनजी या pullआईएनजी अपडेट।

मुझे अपने सर्वर पर सामग्री जनरेट करने वाले उपयोगकर्ता को ट्रैक और बैकअप करना होगा। productionसर्वर Git रेपो की एक प्रति है, और हर रात यह स्वचालित रूप से कहते हैं और क्रॉन के माध्यम से नई फ़ाइलों के सभी करता है। वे pushहमारे गिटोलिट सर्वर पर एड होते हैं , जो तब बाकी सर्वरों को सिंक करने के लिए हुक का उपयोग करता है।

चूंकि सर्वर पर रेपो-बोर्ड की प्रतियां होती हैं, इसलिए आपको न केवल एक स्नैपशॉट मिलता है, बल्कि विस्तृत इतिहास की जानकारी जो आपके सर्वर के साथ कुछ भी होने पर आपको आसानी से बचा सकती है।

मुझे लगता है कि आप दोनों की पेशकश के बारे में बहुत अच्छी समझ है, मैं सिर्फ सर्वर की जाँच करने / कोडबेस को निर्यात करने से लेकर अपने स्वयं के रिपोज़ होने तक के बारे में सोच रहा हूँ। एक और विचार यह है कि आप अपनी मीडिया फ़ाइलों को rsync कर सकते हैं (आपने इनमें से कुछ साइटों के लिए 2GB कहा था, जो मुझे लगता है कि बहुत सारी मीडिया प्रकार की फाइलें हैं?) और उन्हें Git में ट्रैक नहीं करें।


मैंने कुछ प्रदर्शन डेटा जोड़े हैं; जो दिखाता है कि rsync git से लगभग हमेशा तेज है। हालाँकि, मैं लाइव सर्वर पर git repos होने की अतिरिक्त शक्ति के बारे में आपके बिंदुओं को पसंद करता हूं - मैं सोच रहा हूं कि क्या हाइब्रिड दृष्टिकोण सबसे अच्छा नहीं है, परिवर्तन के साथ git repo में धकेला जा रहा है, और फिर git repos को बैकअप में rsynced किया जा रहा है सर्वर ...
डेविड लैंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.