2012-05-21 16 views
9

मैं अधिक सुरक्षा के लिए दूसरे स्थान पर rsnapshot द्वारा उपयोग की गई बैकअप निर्देशिका को मिरर करना चाहता हूं। आदर्श रूप से समाधान ssh के साथ rsync का उपयोग करेगा। फ़ाइलों को हटाने के लिए, रिक्त रूप से प्रतिलिपि बनाने, लक्ष्य में फ़ाइलों को हटाने के लिए, हार्डलिंक्स (rsnapshot द्वारा निर्मित) और सिम्लिंक को संरक्षित करने के लिए rsync को प्रदान करने के लिए मुझे किन तर्कों की आवश्यकता है? फाइलें ext3 फाइल सिस्टम पर हैं। इसके अलावा मैं संभावना से बचने के लिए क्या कर सकता हूं कि अगर स्रोत दूषित हो जाता है तो दोष दर्पण के लिए rsynced हैं?मिरर rsnapshot बैकअप निर्देशिका

+0

मैंने पाया एक स्क्रिप्ट कहा जाता rsnapshot कॉपी जो प्रारंभिक समन्वयन के लिए है है कि वहाँ [rsnapshot कॉपी] (http://cpansearch.perl.org/src/DCANTRELL/App-Rsnapshot-1.999_00002/utils/rsnapshot-प्रतिलिपि)। इस फ़ाइल के शीर्षलेख में यह कहता है: 'rsnapshot-copy वर्तमान में स्नैपशॉट रूट के वृद्धिशील मिररिंग के लिए डिज़ाइन नहीं किया गया है (हालांकि भविष्य में एक वृद्धिशील मोड जोड़ा जा सकता है)।' कोई विचार यह कैसे समर्थन करता है? – highsciguy

+0

एक और विचार है कि rsnapshot लॉग फ़ाइलों का उपयोग करना है (शायद तदनुसार आंतरिक लॉगिंग दिनचर्या को संशोधित करें) एक शेल स्क्रिप्ट बनाने के लिए जो वास्तव में वही एमवी और rsync ऑपरेशंस rsync निष्पादित करता है बैकअप की दर्पण प्रतिलिपि के लिए प्राथमिक बैकअप पर भी किया जाता है । – highsciguy

+0

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

उत्तर

6

मुझे लगता है कि आप जो चाहते हैं उसे करने के विकल्प बड़े पैमाने पर rsync मैन पेज में दस्तावेज किए गए हैं। विशेष रूप से, -H विकल्प (--hard-links) हार्ड-लिंक पहचान सक्षम करता है, और --delete उस स्रोत पर मौजूद चीज़ों को हटाने के लिए rsync का कारण बनता है जो स्रोत पर मौजूद नहीं है। तो हो सकता है की तरह कुछ:

rsync -aH --delete /path/to/src/ /path/to/destination 

इसके अलावा मैं संभावना है कि यदि स्रोत दूषित है दोष दर्पण के लिए rsynced कर रहे हैं से बचने के लिए क्या कर सकते हैं?

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

एक अलग समाधान rsnapshot कई गंतव्यों तक बैक अप होगा, ताकि आप वास्तव में दो मूल स्थानों में अपने मूल स्रोत से बैकअप उत्पन्न कर सकें। इस तरह यदि कोई क्षतिग्रस्त हो जाता है तो दूसरा असुरक्षित होना चाहिए।

+0

निश्चित रूप से सभी विकल्प मैन पेज में हैं। मैं केवल यह सुनिश्चित करना चाहता था कि मैं किसी को भी न भूलूं। लेकिन -ए विकल्प बहुत कॉम्पैक्ट प्रतीत होता है। दो स्थानों पर आरएसएपशॉट संभव नहीं होगा क्योंकि दोनों गंतव्यों एक ही समय में उपलब्ध नहीं होंगे। क्या हमेशा दर्पण के लिए नए स्नैपशॉट्स को आरएसआईएनसीसी करना संभव नहीं होगा? इस स्थान में पुराने स्नैपशॉट्स को संरक्षित किया जाएगा भले ही वे प्राथमिक स्थान में दूषित हों।बेशक मुझे नाम बदलने की आवश्यकता होगी जो rsnapshot द्वारा किया जाता है जब यह स्नैपशॉट जोड़ता है ... – highsciguy

1

दूषित डेटा की प्रति को रोकने के लिए आप साप्ताहिक बैकअप रख सकते हैं और आशा करते हैं कि आप अपने सभी बैकअप खोने से पहले स्रोत पर भ्रष्टाचार देखेंगे। सबसे अच्छा तरीका -c का उपयोग करना होगा और फिर यह फ़ाइल को कॉपी करने के लिए निर्धारित करने के लिए स्रोत और गंतव्य दोनों की चेक रकम की तुलना करेगा। केवल नीचे की ओर यह है कि इसे बैकअप को धीमा प्रक्रिया बनाने वाली पूरी फ़ाइल को पढ़ना चाहिए।

#!/bin/sh 
# Create a Backup of Today 
# Definitions 
sevendaysago=$(date --date='6 days ago' +%Y-%m-%d-%A) 
# Delete backups from 7 days ago 
rm -rf /storage/backups/$sevendaysago 
mkdir -p /storage/backups/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$username 

rsync -aHvz /storage/`date --date=yesterday +\%Y-\%m-\%d`-`date --date=yesterday +\%A`/$host/$user/ /storage/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$user/ 

rsync -acHvz -e ssh --delete --exclude='logs' [email protected]:/home/tim/ /storage/`date +\%Y-\%m-\%d`-`date +\%A`/$host/$user/ 

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

  • कोई संबंधित समस्या नहीं^_^