Windows VisualSVN için depoları yedeklemenin yolları nelerdir?


15

Şu anda Visual SVN kullanıyoruz ve visual svn için tüm depo dizinini yedekliyoruz. Bu, svn motorumuzdaki her bir havuz için tüm verileri yedekler. Acil bir durum veya bir felaket durumunda bu dosyaları geri yükleyip yükleyemeyeceğimi merak ediyorum. Herhangi biriniz bu restorasyon prosedürü ile ilgili deneyiminiz var mı? Teşekkürler.


1
Geri yüklemeyi gerçekten test etmediyseniz, yedeklemenize muhtemelen güvenemezsiniz.
Michael Hampton

Yanıtlar:


11

Bkz. Http://www.visualsvn.com/support/topic/00012/

Bu, aşağıdaki belgelere işaret eder:
http://www.visualsvn.com/support/svnbook/reposadmin/maint/#svn.reposadmin.maint.backup

Yedek almak için Subversion komutlarını kullanmayı açıklar. Umarım zaten yaptığınız şey budur, çünkü düz bir dizin yedeklemesi kullanılamayan bir depoya sahip olabilir.

Subversion'dan yedeklemeyi kullanabilmeniz ve tüm depoyu geri yüklemek için svnadmin dumpveya svnadmin hotcopykomutunu kullanabilmeniz gerekir. Ancak, herhangi bir yedekleme stratejisinde olduğu gibi, sizin için çalıştığından emin olmak için geri yüklemeyi kendiniz test etmeniz gerekir.


8

VisualSVN Server 3.6 sürümünden başlayarak, sunucu yerleşik bir zamanlanmış depo yedekleme ve geri yükleme özelliği içerir. Ayrıca 3.6 sürümü, SVN depolarının zamanlanmış doğrulamasını ekler.

Subversion depolarınız için zamanlanmış depo yedeklemesi ve doğrulaması ayarlamak yalnızca birkaç dakikanızı alır. Adım adım talimatlar için lütfen KB106: Yedekleme ve Geri Yükleme'ye Başlama makalesine bakın .

Bir defalık yedekleme arıyorsanız, Backup-SvnRepository PowerShell cmdlet'ini kullanabilirsiniz. Havuzu kurtarmak için Restore-SvnRepository kullanın . Bu yedekleme cmdlet'leri 3.6 sürümünden itibaren kullanılabilir.

VisualSVN Server'ın en son sürümünü ana indirme sayfasından indirin .

resim açıklamasını buraya girin


VisualSVN Server depolarını yedeklemek için birkaç yöntem vardır. Aşağıdaki kısa açıklamayı kontrol edin.

1. svnadmin hotcopyaracı

svnadmin hotcopydiğer işlemlerin havuzu kullanıp kullanmadığına bakılmaksızın, deponun güvenli bir kopyasını oluşturmanıza olanak tanır. Depolarınız için düzenli olarak yedekleme yapacak özel bir komut dosyası yazabilirsiniz.

Subversion depolarının yedeklenmesi hakkında daha fazla bilgi edinmek için SVN kitabından aşağıdaki makaleyi düşünebilirsiniz: http://www.visualsvn.com/support/svnbook/reposadmin/maint/#svn.reposadmin.maint.backup

2. svnsyncaracı

Bu artımlı yedekleme yöntemidir. Artımlı yedekleme yöntemi, depo verilerinin yalnızca önceki yedeklemeden bu yana değişen kısmını yedekler. Bu aracı "master" ve "slave" olarak çalışacak şekilde ayarlayabilir ve taahhütleri havuzlarına otomatik olarak çoğaltabilirsiniz.

Daha fazla ayrıntı için "svnsync" makalesine bakın: http://www.visualsvn.com/support/svnbook/ref/svnsync/

3. Windows Server Yedekleme. Subversion depolarını yedeklemek için Windows Server Yedekleme'yi kullanabilirsiniz. Yedeklemeleri bir ağ paylaşımına, özel yedekleme birimine, yazılabilir ortama aktarmanızı sağlar. Örneğin, wbadminkomut satırı aracı depolarınızı güvenle yedeklemenizi sağlar. Bu basit komut C:\foo\bar, X:\birimin bir kerelik kopya yedeklemesini gerçekleştirir :

wbadmin start backup –backupTarget:x: -include:c\foo\bar -vsscopy

(Windows Server Yedekleme'yi yüklemek için ocsetup WindowsServerBackupyükseltilmiş komut isteminde çalıştırın ).

Yedeklemeyi farklı şekillerde ayarlayabilirsiniz:

FSFS deposu arka ucu her zaman tutarlı durumda olduğundan, yedeklemeyi çalıştırdığınızda sunucunun hizmetini durdurmanız gerekmez .

Windows Server yedeklemelerini kurtarma hakkında genel ipuçları:

  1. Geri yüklenen depo dosyalarının bozuk olan dosyalarla karışmamasını sağlamak için yedekleri boş bir dizine kurtarın. Kurtarıldıktan sonra depodan sonra, bozuk havuzu silebilir ve ardından kurtarılan depo ile değiştirebilirsiniz.

  2. Havuzu bir yedekten kurtardıktan sonra stop-start döngüsü sunucusu.

  3. Depo kurtarma işleminden sonra istemcileriniz hata alırsa, svnadmin recoverona karşı çalıştırın . Komut anında biter ve depoyu yeniden erişilebilir hale getirir.


Depolar dışında, aşağıdaki bilgileri yedeklemelisiniz:

  1. Depo kökünde depolanan kimlik doğrulama ve yetkilendirme dosyaları ( varsayılan olarak 'C: \ Depolar' ). Ayarlarınıza bağlı olarak şu dosyalar olmalıdır: 'authz' , 'authz-windows' ve 'htpasswd' .

  2. SSL sertifikalarınızla ilgili bilgilerin depolandığı "% VISUALSVN_SERVER% \ certs \" klasörü.

  3. VisualSVN Sunucunuzun yapılandırma dosyalarının saklandığı "% VISUALSVN_SERVER% \ conf \" klasörü.

  4. Sunucu yapılandırmasının diğer bölümlerinin depolandığı "HKEY_LOCAL_MACHINE \ SOFTWARE \ VisualSVN \ VisualSVN Server" kayıt defteri anahtarı.


1
Son seçeneğiniz için svn hizmetini durdurmanız gerekir, aksi takdirde yedeklemeyi bozacak etkin bir işlemin bulunduğu bir repoyu yedekleme riskiyle karşı karşıya kalırsınız.
Andy

5

Bunu şu şekilde yapıyorum:

svnadmin dump "c:/Repositories/svnroot" > c:/backup/svnroot_%date%.dump

Ayrıca yerden tasarruf etmek için rar / zip yapabilirsiniz. SVN'yi Linux'tan VisualSVN'ye taşıdığımda aynı yöntemi kullanıyordum, bu yüzden bu yedekleme gerektiği gibi çalışıyor.


3

SVN deposunun yedeklerini almanın en kolay ve en iyi yolu svnsync kullanmaktır . Bu, herhangi bir taahhüdü bir yedekleme deposuna yeniden yürüten artımlı bir araçtır. Gitmek kolay - bu blog yayınına bakın - ve sadece değişiklikler gönderdiği için hızlı. Birisi geçmiş bir revpropu güncellediğinde 'kenar durumunu' yakalamak için bir rev-rev-prop-değişiklik kancası ayarlamanız gerekir, ancak aksi takdirde yedeklemeleri sürekli tutmak için saatte bir (çalıştığım gibi) çalıştırabilirsiniz. veri yedekleme konusunda gerçekten paranoyaksanız, işlem sonrası kancada bile çalıştırabilirsiniz!

Canlı repo ölürse, o zaman canlı repo tekrar çalışana kadar yedekleme repo sadece "svn relocate" yapabilirsiniz (yine de, bunları almak için svnsync çalıştırmak sürece yedekleme kapalı bir şey yazarken dikkatli olun canlı repoya uygulanan değişiklikler, bunu düşündüğünüzde oldukça açıktır).

Böylece, sürekli yedeklemeniz ve minimum kaynak kullanımı ile saniye cinsinden ölçülen kesinti süreniz olur. Yedeklemeler bundan daha iyi olamaz!


3

Başka bir seçenek hotcopy'dir . Tüm deponuzu yedekler. Daha fazla disk alanı kaplar, ancak çalıştırılması çok kolaydır ve bunu kullanarak havuzu geri yüklemek çok kolaydır.


2

VisualSVN bir Windows ürünü olduğundan Windows üzerinde çalışacaktır. Yedekleme yardımcı programı yedeklemeyi yapmak için Birim Gölge Kopyasını kullanabiliyorsa, bu dahili olarak tutarlı bir yedekleme üretmelidir. Yerleşik NTBACKUP veya Symantec Backup Exec gibi üçüncü taraf yazılımlar veya Windows Server 2008'de yerleşik olarak bulunan disk tabanlı yedekleme araçlarının tümü Birim Gölge Kopyası'nı kullanabilir.


Bu işlemsel olarak sağlam olmayacak. Herhangi bir veritabanı için yaptığınız gibi, sunucunun yedeklemeyi bir şekilde yapmasını sağlamanız gerekir.
David Heffernan

SQL Server durumunda, VSS tabanlı yedeklemeler aslında işlemsel olarak güvenlidir. VisualSVN sunucusu durumunda, Windows tabanlı bir sunucu olarak SQL Server'ın yaptığı gibi standart windows yedekleme çözümlerinden biri tarafından yedeklendiğinde doğru davranacağını umarız. Bunun olup olmadığını gösteren hiçbir kanıtım yok.
Tim Long

Şüpheliyim. VisualSVN basitçe svn paketlenir. VSS ile entegre olan yedek olduğuna dair bir gösterge görmedim.
David Heffernan

0

Bir Windows sistemine Visual SVN'nin varsayılan yüklemesinde tüm depoları yedeklemek isteyenler için

Aşağıdaki cmd komut dosyasını kullanıyorum - Havuz kökünün tüm alt klasörlerini yedekleme yoluna döker ve onları 7 sıkıştırır .

@echo off
set svnAdminPath="C:\Program Files (x86)\VisualSVN Server\bin"
set sevenZipPath="C:\Program Files\7-Zip"
set repositoryRoot=d:\Repositories
set backupPath=c:\Source\Backup\SVN
set dateStamp=%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%

for /f %%f in ('dir /b /AD %%repositoryRoot%%') do ( 
call:dumpRepository %%f 
call:zipLastDump
)
goto:eof

:dumpRepository
cd /d %svnAdminPath%
set repoPath=%repositoryRoot%/%~1
set dumpFile=%~1_%dateStamp%
echo.-------------------
echo.Dumping %~1 to %dumpFile%.dump
echo.-------------------
svnadmin dump "%repoPath%" > "%backupPath%\%dumpFile%.dump"
exit /b

:zipLastDump
cd /d %sevenZipPath%
set zipFile="%backupPath%\%dumpFile%.7z"
echo.-------------------
echo.Zipping %dumpFile%.dump to %zipFile%
echo.-------------------
7z a "%zipFile%" "%backupPath%\%dumpFile%.dump" 
del "%backupPath%\%dumpFile%.dump" 
exit /b
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.