एसवीएन रिपॉजिटरी बैकअप रणनीतियों


195

मैं एसवीएन के लिए नया हूं और मैं जानना चाहता हूं कि विंडोज वातावरण में रिपॉजिटरी के बैकअप के लिए क्या तरीके उपलब्ध हैं?


1
Windows के लिए VisualSVN सर्वर में बैकअप के लिए एक अंतर्निहित सुविधा और शेड्यूल पर SVN रिपॉजिटरी को सत्यापित करना शामिल है: Visualsvn.com/server/features/backup
bahrep

जवाबों:


179

आप (Linux) कुछ का उपयोग कर सकते हैं:

svnadmin dump repositorypath | gzip > backupname.svn.gz

चूंकि विंडोज GZip का समर्थन नहीं करता है, यह सिर्फ है:

svnadmin dump repositorypath > backupname.svn

11
मैं कुछ के लिए नहीं जानता, लेकिन निश्चित रूप से 7-ज़िप जैसे कुछ उपकरण एसटीडीआईएन से डेटा को संपीड़ित करने में सक्षम होंगे, जिसका अर्थ है कि आप विंडोज पर भी पहली शैली का उपयोग कर सकते हैं।
निकफ

5
मैं सिर्फ यह देख रहा हूं और डॉक्स svnbook.red-bean.com/nightly/en/… से एक टिप्पणी यह है कि आप svnadmin डंप का एक बहुत बड़ा आउटपुट प्राप्त करेंगे, जब तक कि आप --deltas विकल्प का उपयोग न करें।
जेसन एस

5
और विंडोज gzip का समर्थन करता है, बस इसे unxutils वेबपेज unxutils.sourceforge.net
जेसन एस

52
7Zip का उपयोग करना: svnadmin dump repositorypath | "%ProgramFiles%\7-Zip\7z.exe" a backup.7z -sibackupname.svn यह 'backup.7z' नामक एक फ़ाइल बनाएगा जिसमें एक एकल फ़ाइल, 'backupname.svn' होगी, जो इससे आउटपुट है svnadmin dump
मैट

4
@ जोश for project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
स्टोडोला

107

हम svnadmin हॉटकॉपी का उपयोग करते हैं, जैसे:

svnadmin hotcopy C:\svn\repo D:\backups\svn\repo

पुस्तक के अनुसार :

आप इस आदेश को किसी भी समय चला सकते हैं और रिपॉजिटरी की एक सुरक्षित प्रतिलिपि बना सकते हैं, भले ही अन्य प्रक्रियाएं रिपॉजिटरी का उपयोग कर रही हों।

आप बेशक जिप (अधिमानतः 7-जिप) बैकअप कॉपी कर सकते हैं। IMHO यह बैकअप विकल्पों में से सबसे सीधा है: आपदा के मामले में स्थिति में वापस लाने के अलावा अन्य कुछ भी नहीं करना है।


13
मुझे लगता है कि कुछ कारणों से बैकअप के लिए svnadmin डंप पसंद किया जाता है। देखें svn.haxx.se/users/archive-2005-05/0842.shtml
daremon

4
@ डारेमोन: मेरा सुझाव है कि आप जिन पोस्ट से जुड़े हैं, उनके जवाबों को पढ़िए, विशेष रूप से जिसमें उल्लेख है कि svnadmin डंप में रेपो की नियंत्रण फाइलें शामिल नहीं हैं।
पॉवरलॉर्ड

करीबी दौड़, लेकिन, मैं आर।
बेमरोस

हॉटकॉपी कमांड बैकअप उत्पन्न या अधिलेखित नहीं करता है जो इसे उत्पन्न करता है। इसलिए यदि आप कार्य शेड्यूलर का उपयोग करके खिड़कियों में इसे स्वचालित करने की योजना बना रहे हैं, तो निम्न बैच फ़ाइल देखें: cfchimp.com/wordpress/2008/05/…
रयान सैम्पसन

1
खतरे के संकेत के लिए एक शब्द ही काफी है। जबकि svnsync चल रहा है एक रिपॉजिटरी की एक svnsync'd मिरर कॉपी हॉटकोपी न करें! परिणामी प्रति दूषित हो सकती है। इस धागे को विवरण के लिए देखें: subversion.open.collab.net/ds/…
zvolkov

24

सबवर्सन वेब साइट पर एक hotbackup.py स्क्रिप्ट उपलब्ध है जो बैकअप को स्वचालित करने के लिए काफी उपयोगी है।

http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in


7
मेरा मानना ​​है कि यह एक लिंक है जो हॉटबैकअप स्क्रिप्ट पर काम करता है: svn.apache.org/repos/asf/subversion/trunk/tools/backup/…
कारवेल फेंटन

22

यहाँ एक पर्ल स्क्रिप्ट है जो होगी:

  1. रेपो का बैकअप लें
  2. इसे एससीपी के माध्यम से दूसरे सर्वर पर कॉपी करें
  3. बैकअप लें
  4. बैकअप से टेस्ट रिपॉजिटरी बनाएं
  5. एक परीक्षण चेकआउट करें
  6. आपको किसी भी त्रुटि (क्रोन के माध्यम से) ईमेल करें

लिपी:

my $svn_repo = "/var/svn";  
my $bkup_dir = "/home/backup_user/backups";
my $bkup_file = "my_backup-";
my $tmp_dir = "/home/backup_user/tmp";   
my $bkup_svr = "my.backup.com";
my $bkup_svr_login = "backup";

$bkup_file = $bkup_file . `date +%Y%m%d-%H%M`;
chomp $bkup_file;
my $youngest = `svnlook youngest $svn_repo`;
chomp $youngest;

my $dump_command = "svnadmin  -q dump $svn_repo > $bkup_dir/$bkup_file ";
print "\nDumping Subversion repo $svn_repo to $bkup_file...\n";
print `$dump_command`;
print "Backing up through revision $youngest... \n";
print "\nCompressing dump file...\n";
print `gzip -9 $bkup_dir/$bkup_file\n`;
chomp $bkup_file;
my $zipped_file = $bkup_dir . "/" . $bkup_file . ".gz";
print "\nCreated $zipped_file\n";
print `scp $zipped_file $bkup_svr_login\@$bkup_svr:/home/backup/`;
print "\n$bkup_file.gz transfered to $bkup_svr\n";

#Test Backup
print "\n---------------------------------------\n";
print "Testing Backup";
print "\n---------------------------------------\n";
print "Downloading $bkup_file.gz from $bkup_svr\n";
print `scp $bkup_svr_login\@$bkup_svr:/home/backup/$bkup_file.gz $tmp_dir/`;
print "Unzipping $bkup_file.gz\n";
print `gunzip $tmp_dir/$bkup_file.gz`;
print "Creating test repository\n";
print `svnadmin create $tmp_dir/test_repo`;
print "Loading repository\n";
print `svnadmin -q load $tmp_dir/test_repo < $tmp_dir/$bkup_file`;
print "Checking out repository\n";
print `svn -q co file://$tmp_dir/test_repo $tmp_dir/test_checkout`;
print "Cleaning up\n";
print `rm -f $tmp_dir/$bkup_file`;
print `rm -rf $tmp_dir/test_checkout`;
print `rm -rf $tmp_dir/test_repo`;

स्क्रिप्ट स्रोत और इस प्रकार के बैकअप के लिए तर्कसंगत के बारे में अधिक विवरण।


19

मैं उपयोग करता हूं svnsync का हूं , जो एक दूरस्थ सर्वर को दर्पण / दास के रूप में स्थापित करता है। हमारे पास दो सप्ताह पहले एक सर्वर था, और मैं दास को प्राथमिक स्थिति में आसानी से स्विच करने में सक्षम था (केवल मूल के लिए गुलाम भंडार पर यूयूआईडी को रीसेट करना था)।

एक और लाभ यह है कि सिंक को एक मध्य-व्यक्ति द्वारा चलाया जा सकता है, बजाय किसी सर्वर पर कार्य के। मेरे पास दो वीपीएन के लिए एक क्लाइंट है जो उनके बीच एक रिपॉजिटरी सिंक करता है।


तो यह स्पष्ट रूप से दोनों के बीच नवीनतम रेपो संस्करण को सिंक करता है?
पॉजिटिव

1
हालांकि यह शीर्षक में है, मुझे नहीं पता कि मैं इसे "सिंक" कहूंगा। यह वास्तव में एक बैकअप है, जहां यह मास्टर पर संशोधन करेगा और उन्हें दास पर रखेगा। यदि आपने दास पर संशोधन किया है, तो वे या तो "सिंक" को तोड़ देंगे, या पागलपन का परिणाम होगा। टूल का इरादा उपयोग ऑफ-साइट, रीड-ओनली मिरर बनाने के लिए है, लेकिन यह बैकअप सर्वर बनाने के लिए एक सराहनीय काम करता है।
टॉम मेफील्ड

1
Svnsync का लाभ यह है कि आप इसे बहुत बार चला सकते हैं। हर दस मिनट या यहां तक ​​कि हर प्रतिबद्ध (हुक का उपयोग करके)। इसका लाभ यह है कि कोई भी संभावित डेटा हानि को कम कर सकता है जिसे आप अंतिम बैकअप के बीच प्राप्त करेंगे और जब लाइव रेपो खो जाएगा।
8 डीएच

12

svnadmin हॉटकॉपी

svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH

यह उपकमांड आपकी रिपॉजिटरी का पूर्ण "हॉट" बैकअप बनाता है, जिसमें सभी हुक, कॉन्फ़िगरेशन फाइलें और, निश्चित रूप से, डेटाबेस फाइलें शामिल हैं।




5

मूल रूप से यह svos सर्वर बंद कर दिया है तो रिपॉजिटरी फ़ोल्डर को कॉपी करने के लिए सुरक्षित है। (स्रोत: https://groups.google.com/forum/?fromgroups# .topic/ visualsvn/ i_55khUBrys% 5B1-25 % 5D )

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

उदाहरण:

  1. कोबियन बैकअप स्थापित करें
  2. बैकअप कार्य जोड़ें:

    • रिपॉजिटरी फ़ोल्डर में स्रोत सेट करें (उदा C:\Repositories\),

    • पूर्व-बैकअप ईवेंट "STOP_SERVICE"VisualSVN जोड़ें ,

    • पोस्ट-बैकअप ईवेंट जोड़ें, "START_SERVICE"VisualSVN,

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

  3. फायदा!


4

एक svn सर्वर को बैकअप करने के लिए 2 मुख्य विधियां हैं, पहले हॉटकॉपी है जो आपकी रिपॉजिटरी फ़ाइलों की एक प्रति बनाएगी, इस दृष्टिकोण के साथ मुख्य समस्या यह है कि यह अंतर्निहित फ़ाइल सिस्टम के बारे में डेटा को बचाता है, इसलिए आपको रिपॉस्ट करने की कोशिश करने में कुछ कठिनाइयां हो सकती हैं एक और svn सर्वर तरह या किसी अन्य मशीन में इस तरह का बैकअप। एक अन्य प्रकार का बैकअप है जिसे डंप कहा जाता है, यह बैकअप अभ्यस्त फ़ाइल सिस्टम की किसी भी जानकारी को सहेजता है और इसके किसी भी प्रकार के SVN सर्वर को tigiris.org तोड़फोड़ में आधारित है।

बैकअप टूल के बारे में आप कमांड प्रॉम्प्ट से svnadmin टूल (यह हॉटकॉपी और डंप करने में सक्षम है) का उपयोग कर सकते हैं, यह कंसोल उसी डायरेक्टरी में रहता है जहां आपका svn सर्वर रहता है या आप svn बैकअप टूल के लिए गूगल कर सकते हैं।

मेरी सिफारिश यह है कि आप दोनों प्रकार के बैकअप करते हैं और उन्हें कार्यालय से अपने ईमेल अकाउन्ट, अमेजन s3 सेवा, ftp, या azure सेवाओं से बाहर निकालते हैं, इस तरह आपके पास svnn को होस्ट करने के लिए बिना किसी सुरक्षा बैकअप के होगा। आपका कार्यालय।


4

यहां स्थानीय और दूरस्थ तोड़फोड़ रिपॉजिटरी का एक डंप बनाने के लिए GUI विंडोज टूल:

https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html

उपकरण विवरण कहता है:

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

उममीद है कि इससे मदद मिलेगी...


इसे साझा करने के लिए धन्यवाद, जैसा कि कहा गया है।
एड डेग्वेन

3

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

यदि आवश्यक हो, तो बस अनुमतियों को संरक्षित करना सुनिश्चित करें। आमतौर पर, यह केवल लिनक्स मशीनों पर एक चिंता का विषय है।


7
यह बिल्कुल सुरक्षित नहीं है अगर कोई एक कॉपी ऑपरेशन के दौरान कमिट करता है - मेरे साथ भी ऐसा केवल 4 लोगों के साथ हुआ है जिसमें रेपो तक पहुंचने और इसे अनजाने में इस्तेमाल करने की बात है। हॉटकॉपी का उपयोग करने के बारे में डंकन का उत्तर देखें।
निकफ

हालांकि, यदि आप पूरी तरह से एकल काम कर रहे हैं, तो मुझे लगता है कि यह रेपो का बैकअप लेने का एक सुरक्षित तरीका है? मैं अपनी व्यक्तिगत परियोजनाओं के लिए तोड़फोड़ का उपयोग करता हूं, और यही मैं वर्तमान में कर रहा हूं।
एंड्रयू गैरीसन

3

होस्ट किए गए रिपॉजिटरी के लिए आप svn संस्करण 1.7 का उपयोग कर सकते हैं svnrdump, जो svnadmin dumpस्थानीय रिपॉजिटरी के लिए अनुरूप है। यह लेख एक अच्छा वॉक-थ्रू प्रदान करता है, जो अनिवार्य रूप से उबलता है:

svnrdump dump /URL/to/remote/repository > myRepository.dump

डंप फ़ाइल डाउनलोड करने के बाद आप इसे स्थानीय स्तर पर आयात कर सकते हैं

svnadmin load /path/to/local/repository < myRepository.dump

या अपनी पसंद के होस्ट पर अपलोड करें।


3

यदि आप FSFS रिपॉजिटरी प्रारूप (डिफ़ॉल्ट) का उपयोग कर रहे हैं, तो आप बैकअप बनाने के लिए रिपॉजिटरी को खुद कॉपी कर सकते हैं। पुराने BerkleyDB प्रणाली के साथ, रिपॉजिटरी प्लेटफ़ॉर्म स्वतंत्र नहीं है और आप आमतौर पर svnadmin डंप का उपयोग करना चाहते हैं।

बैकअप के लिए svnbook प्रलेखन विषय की सिफारिश की svnadmin hotcopyकमान, के रूप में यह प्रयोग और ऐसे में फ़ाइलों जैसे मुद्दों का ख्याल रखना होगा।


2
@echo off
set hour=%time:~0,2%
if "%hour:~0,1%"==" " set hour=0%time:~1,1%
set folder=%date:~6,4%%date:~3,2%%date:~0,2%%hour%%time:~3,2%

echo Performing Backup
md "\\HOME\Development\Backups\SubVersion\%folder%"

svnadmin dump "C:\Users\Yakyb\Desktop\MainRepositary\Jake" | "C:\Program Files\7-Zip\7z.exe" a "\\HOME\Development\Backups\SubVersion\%folder%\Jake.7z" -sibackupname.svn

यह मेरे द्वारा चलाए जा रहे बैच फ़ाइल है



1

मैंने अपने प्रोजेक्ट के दूरस्थ SVN रिपॉजिटरी का बैकअप लेने के उद्देश्य से मेरे द्वारा उठाए गए कदमों का संकलन किया है।

install svk (http://svk.bestpractical.com/view/SVKWin32)

install svn (http://sourceforge.net/projects/win32svn/files/1.6.16/Setup-Subversion-1.6.16.msi/download)

svk mirror //local <remote repository URL>

svk sync //local

इसमें समय लगता है और यह कहता है कि यह भंडार से लॉग ला रहा है। यह अंदर फाइलों का एक सेट बनाता है C:\Documents and Settings\nverma\.svk\local

दूरस्थ से परिवर्तनों के नवीनतम सेट के साथ इस स्थानीय रिपॉजिटरी को अपडेट करने के लिए, बस समय-समय पर पिछली कमांड को चलाएं।

अब आप अपने स्थानीय भंडार ( /home/user/.svk/localइस उदाहरण में) के साथ खेल सकते हैं जैसे कि यह एक सामान्य एसवीएन भंडार था!

इस दृष्टिकोण के साथ एकमात्र समस्या यह है कि स्थानीय रिपॉजिटरी को दूरस्थ रिपॉजिटरी में वास्तविक संशोधन द्वारा संशोधन वेतन वृद्धि के साथ बनाया गया है। जैसा कि किसी ने लिखा है:

Svk miror कमांड सिर्फ बनाई गई रिपॉजिटरी में एक प्रतिबद्ध बनाता है। इसलिए बाद के सिंक द्वारा बनाए गए सभी कमानों में दूरस्थ सार्वजनिक रिपॉजिटरी की तुलना में एक के बाद एक वृद्धि संख्या होगी।

लेकिन, यह मेरे लिए ठीक था क्योंकि मैं केवल समय-समय पर रिमोट रिपॉजिटरी के कुछ बैकअप चाहता था, और कुछ नहीं।

सत्यापन:

सत्यापित करने के लिए, इस तरह से स्थानीय भंडार के साथ SVN क्लाइंट का उपयोग करें:

svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/"  <local-dir-path-to-checkout-onto>

यह आदेश स्थानीय रिपॉजिटरी से नवीनतम संशोधन की जांच करने के लिए जाता है। आखिर में कहता है Checked out revision N। यह Nरिमोट रिपॉजिटरी में पाए गए वास्तविक संशोधन (ऊपर बताई गई समस्या के कारण) से एक अधिक था।

यह सत्यापित करने के लिए कि svk ने भी सारा इतिहास लाया है, SVN चेकआउट को -r2, 10, 50 आदि के साथ प्रयोग करते हुए विभिन्न पुराने संशोधनों के साथ चलाया गया था <local-dir-path-to-checkout-onto>

अंत में, डायरेक्टरी को ज़िप करें C:/Documents and Settings\nverma/.svk/local/और जिप को कहीं स्टोर करें। ऐसा नियमित रूप से करते रहें।


0

जैसा कि अन्य लोगों ने कहा है, सब -वर्जन टीम के हॉट -बैकअप एरोमा में बस सादे से कुछ अच्छी विशेषताएं हैं svnadmin hotcopy

मैं एक अजगर स्क्रिप्ट पर एक निर्धारित कार्य चलाता हूं जो मशीन पर मेरे सभी रिपॉजिटरी के लिए मकड़ियों का उपयोग करता है, और कई दिनों की हॉटकॉपी (भ्रष्टाचार से परे) और svnadmin svndumpएक रिमोट मशीन पर रखने के लिए हॉटबैकअप का उपयोग करता है । बहाली वास्तव में उस से आसान है - अब तक।


0

1.1 SVN (तोड़फोड़) भंडार से डंप बनाएँ

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

वास्तविक उदाहरण

svnadmin dump /var/www/svn/testrepo > /backups/testrepo.dump

1.2 गज़िप ने डंप बनाया

gzip -9 /path/to/reponame.dump

वास्तविक उदाहरण

gzip -9 /backups/testrepo.dump

1.3 एसवीएन डंप और गज़िप डंप वन-लाइनर के साथ

svnadmin dump /path/to/reponame | gzip -9 > /path/to/reponame.dump.gz

वास्तविक उदाहरण

svnadmin dump /var/www/svn/testrepo |Â gzip -9 > /backups/testrepo.dump.gz

लिनक्स पर बैकअप (डंप) और रिस्टोर (लोड) SVN (तोड़फोड़) कैसे करें।
रेफरी: svn तोड़फोड़ बैकअप andrestore

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.