सबवर्सन बैकअप करने का सबसे अच्छा तरीका?


10

सबवर्सन बैकअप (एक डेबियन आधारित सर्वर पर) करने का सबसे अच्छा तरीका क्या है।

यह svnadmin का उपयोग करने के लिए है?

svnadmin dump /path/to/reponame > reponame.dump

या शायद सिर्फ dir को टार करने के लिए जहां रिपॉजिटरी हैं?

tar -cvzf svn.backup.tar.gz /var/subversion/

ऊपर के पेशेवरों और विपक्ष क्या हैं?

धन्यवाद जोहान


अद्यतन : यह एक छोटा सा सर्वर है जिसमें केवल कुछ ही प्रतिनिधि हैं। इसलिए वृद्धिशील बैकअप की आवश्यकता नहीं है, मुझे लगता है कि इसे सरल रखने पर ध्यान देना बेहतर है।

अद्यतन : मैंने पैक्स रैपर स्क्रिप्ट का उपयोग किया (जो बदले में svn-hot-backup के लिए एक रैपर था) एक पूर्ण बैकअप करने के लिए और फिर एक और स्वच्छ कंप्यूटर पर एक पूर्ण पुनर्प्राप्ति किया। हालाँकि मैंने उस "SVN_HOTBACKUP_NUM_BACKUPS = 10" भाग को हटा दिया क्योंकि यह मेरे लिए काम नहीं कर रहा था।

कृपया ध्यान दें कि मुझे लगता है कि यह बहुत ही सरल था और इसका परिणाम बहुत ही करीब था। लेकिन जैसा कि मन्नी ने यहां बताया कि svn-hot-backup / "svnadmin hotcopy" का उपयोग करना अधिक विश्वसनीय तरीका है, क्योंकि यदि आप अशुभ हैं तो टार समय-समय पर भ्रष्ट बैकअप बना सकते हैं।

जवाबों:


11

Svn-hot-backup स्क्रिप्ट देखें। इसे तोड़फोड़ के साथ जहाज करना चाहिए, और जो आप चाहते हैं उसे करने के लिए सभी तर्क हैं, साथ ही पुराने बैकअप से स्वचालित रूप से रोलिंग करना है। मैंने निम्न आवरण स्क्रिप्ट लिखी है जो svn-hot-backup का उपयोग रात के क्रोनजोब के रूप में एक ही सर्वर को कई रिपॉजिटरी के साथ बैकअप करने के लिए करती है, जिसे सामान्यीकृत करने के लिए थोड़ा संशोधित किया गया है।

#!/bin/bash

#
# Dumps the svn repos to a file and backs it up
# to a local directory.

#Keeps the last 10 revisions
REPODIR="/var/repos"
BAKDIR="/data/backup/svn"
PROG="/usr/local/sbin/svn-hot-backup"
REPOLIST='repo1 repo2 repo3'

if [ ! -x "${PROG}" ]
then
        echo "svnbak: Could not execute \`${PROG}\`"
        exit 1
fi

for repo in ${REPOLIST}
do
    # Dump the database to a backup file
    echo "svnbak: Dumping subversion repository:  ${repo}"
    SVN_HOTBACKUP_NUM_BACKUPS=10 nice ${PROG} --archive-type=gz ${REPODIR}/${repo} ${BAKDIR}/${repo} &> /tmp/svnbak.$$

    if [ "$?" -eq "1" ]
    then
        echo "svnbak: Hot backup on '${repo}' failed with message:"
        /bin/cat /tmp/svnbak.$$
    fi

    /bin/rm /tmp/svnbak.$$
done

exit 0

1
और चूंकि यह svnadmin hotcopy के लिए एक आवरण है, मैं ठीक होने के लिए अनुमान लगाता हूं कि मैं केवल / var / subversion / repos / के तहत फ़ाइलों की प्रतिलिपि बनाता हूं? क्या मुझे कुछ और करने की ज़रूरत है?
जोहान

'svnadmin verify' भी स्क्रिप्ट के लिए एक अच्छा जोड़ होगा ताकि यह सत्यापित किया जा सके कि आपके द्वारा कॉपी की गई रिपॉजिटरी वास्तव में मान्य है या नहीं।
एंड्रियाइड

@ जोहान - हाँ, बस उनकी नकल करो। "परिणामी बैकअप एक पूरी तरह से कार्यात्मक सबवर्सन रिपॉजिटरी है, जिसे आपके लाइव रिपॉजिटरी के प्रतिस्थापन के रूप में गिराया जा सकता है। कुछ गलत होना चाहिए।" से svnbook.red-bean.com/nightly/en/...
Jonik

आप किसी भी रिपॉजिटरी को खोजने के लिए खोज कमांड का उपयोग कर सकते हैं जो केवल पिछले एन दिनों के भीतर बदल गए हैं। बस खोज कमांड के आउटपुट में 'db / current' की खोज करें। इसका यह लाभ है कि आपको उस REPOLIST चर को लगातार अपडेट करने की आवश्यकता नहीं है। इसके अलावा, एसवीएन 1.8 में, आपको खाली स्थान पर हॉटकॉपी की आवश्यकता नहीं होगी, लेकिन पिछले हॉटकॉपी को जोड़ने में सक्षम होगा। यह परिमाण के 2-3 आदेशों द्वारा हॉटकॉपी बैकअप को गति देगा।
thaharold

9

क्या आपने इस पर प्रलेखन देखा है ?

असल में, आपके पास दो विकल्प हैं:

  1. उपयोग कर वृद्धिशील बैकअप करें svnadmin dump
  2. बैकअप अपने पूरे भंडार का उपयोग कर svnadmin hotcopy

बस निर्देशिका की प्रतिलिपि बनाना एक विकल्प नहीं है क्योंकि प्रतिलिपि बनाते समय आपकी रिपॉजिटरी बदल सकती है।

चाहे आप वृद्धिशील में हों या पूर्ण बैकअप, आपकी राशि पर निर्भर करता है, आपकी रिपॉजिटरी का आकार, आपकी ज़रूरतें और आपका बुनियादी ढाँचा।


4

मैं इस तथ्य के कारण SVNBackup की सिफारिश कर रहा हूं कि यह वृद्धिशील बैकअप करने में सक्षम है ।

यह महत्वपूर्ण क्यों है? ठीक है, अगर आपके पास एक बड़ी विकास टीम है और आपके पास एक दैनिक तोड़फोड़ बैकअप है और आपका सिस्टम पुराने बैकअप में 12 घंटे विफल रहता है, तो पूरे दिन का काम खो जाता है।

यदि आप पूरा बैकअप करते हैं (जो कि SVN हॉटकॉपी है) तो दिन में कई बार आप अपनी रिपॉजिटरी मशीन को अनावश्यक भार पैदा कर रहे हैं, जो अधीर डेवलपर्स को परेशान करेगा।

एक बोनस के रूप में; मैं बैकअप समाधान के रूप में बैकअप-पीसी की भी सिफारिश करता हूं । यह वृद्धिशील दूरस्थ बैकअप कर सकता है और यदि आप विभिन्न प्रणालियों पर समान फ़ाइलों का बैकअप ले रहे हैं तो बहुत अधिक स्थान बचाने में सक्षम हैं।


4

मैं svnsync का उपयोग बैकअप के लिए अन्यथा केवल पढ़ने के लिए रिपॉजिटरी में करता हूं, जो कि वृद्ध प्रतियों (दिन, सप्ताह, महीने) के साथ समर्थित है।



मैनुअल से "और जबकि ऐसा करने के कुछ तरीके हैं, इसकी प्राथमिक ताकत यह है कि यह दूरस्थ रूप से काम कर सकता है"।
जोहान

Svnsync का उल्लेख करने के लिए +1 - पसंद है dumpऔर hotcopyनिश्चित रूप से इसके उपयोग हैं। यह स्थानीय वृद्धिशील बैकअप के लिए भी काफी उपयोगी हो सकता है।
जोनीक डे

और यदि बैकअप सर्वर एक अलग स्थान पर है, तो आप एक ही चरण में बहुत सारे पुनर्प्राप्ति मामलों को हल करते हैं
Zac थॉम्पसन

1
यदि आप svnsync मार्ग पर जा रहे हैं तो दो चीजें: 1) यदि आपके पास svnadmin हॉटकॉपी के साथ एक बड़ी रेपो शुरुआत है, क्योंकि यह बहुत तेज है और डेटा को db / Revs 2 से परे बैक अप करता है) स्रोत रेपो में svync टाइप कॉल जोड़ें बाद के हुक ताकि दर्पण हमेशा अप टू डेट हो। (लेकिन उस दर्पण के हुक से बाहर रखें ताकि दर्पण खुद को दर्पण करने की कोशिश न करे!)
रॉबर्ट Calhoun

2

आप svnadmin के साथ वृद्धिशील बैकअप बना सकते हैं यदि आप इसे चाहते हैं, तो आपको अपना टार संग्रह बनाने से पहले हॉट -बैकअप एरोकोम चलाना चाहिए ।

यहाँ svn repos का समर्थन करने के बारे में एक लेख है । वैसे भी, एसवीएन पुस्तक पढ़ना एक अच्छा प्रारंभिक बिंदु है जैसा कि पहले कहा गया था।


0

मैं सादे पुराने rsync के साथ कई 100GB + svn रिपॉजिटरी का बैकअप लेता हूं। svnadmin dumpऔर svnadmin hotcopyइन रिपॉजिटरी पर दिन लगेंगे।

देखने के लिए एक और चीज svnadmin dumpबैकअप लॉक और हुक स्क्रिप्ट नहीं है।


-1

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

ऐसी कई ऑनलाइन बैकअप सेवाएं हैं - अधिकांश 2GB तक मुफ्त हैं।


1
यह छोटे व्यक्तिगत रेपो के लिए ठीक है, लेकिन शायद ही "सबसे अच्छा तरीका" पोस्टर की तलाश में है। एक समस्या यह है कि आप कई डेवलपर्स द्वारा समवर्ती पहुंच के साथ स्थिरता की गारंटी नहीं दे सकते। बैकअप का प्राथमिक लक्ष्य विश्वसनीयता और स्थिरता होना चाहिए, बजाय ऑनलाइन एक्सेस और संस्करणों के।
Martijn Heemels
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.