SVN'de yeniyim ve bir Windows ortamında depoları yedeklemek için hangi yöntemlerin kullanılabilir olduğunu bilmek ister misiniz?
SVN'de yeniyim ve bir Windows ortamında depoları yedeklemek için hangi yöntemlerin kullanılabilir olduğunu bilmek ister misiniz?
Yanıtlar:
(Linux) gibi bir şey kullanabilirsiniz:
svnadmin dump repositorypath | gzip > backupname.svn.gz
Windows GZip'i desteklemediğinden sadece:
svnadmin dump repositorypath > backupname.svn
svnadmin dump repositorypath | "%ProgramFiles%\7-Zip\7z.exe" a backup.7z -sibackupname.svn
Bu, 'backup.7z' adında tek bir dosya içeren 'backupname.svn' adlı bir dosya oluşturur svnadmin dump
.
for project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
Svnadmin hotcopy kullanıyoruz, örneğin:
svnadmin hotcopy C:\svn\repo D:\backups\svn\repo
Gereğince kitabında :
Bu komutu istediğiniz zaman çalıştırabilir ve diğer işlemlerin veri havuzunu kullanıp kullanmadığına bakılmaksızın deponun güvenli bir kopyasını oluşturabilirsiniz.
Tabii ki yedek kopyayı ZIP (tercihen 7-Zip) yapabilirsiniz. IMHO Yedekleme seçeneklerinin en basit olanıdır: felaket durumunda tekrar yerine koymaktan başka yapacak çok az şey vardır.
Subversion web sitesinde yedeklemeleri otomatikleştirmek için oldukça kullanışlı bir hotbackup.py komut dosyası var.
http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in
İşte bir Perl betiği:
Senaryo:
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`;
Komut dosyası kaynağı ve bu tür yedekleme için rasyonel hakkında daha fazla ayrıntı.
Uzak sunucuyu yansıtma / slave olarak ayarlayan svnsync kullanıyorum . İki hafta önce bir sunucumuz vardı ve köle birincil konuma kolayca geçebildim (sadece köle deposundaki UUID'yi orijinaline sıfırlamak zorunda kaldım).
Başka bir avantajı, eşitlemenin her iki sunucuda bir görev olarak değil, bir orta adam tarafından çalıştırılabilmesidir. İki VPN aralarında bir havuzu senkronize eden bir istemcim vardı.
svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
Bu alt komut, tüm kancalar, yapılandırma dosyaları ve elbette veritabanı dosyaları dahil olmak üzere deponuzun tam bir “sıcak” yedeğini oluşturur.
İle bir havuz yedeklemesi ( döküm ) oluşturabilirsiniz svnadmin dump
.
Daha sonra bunu kullanarak içe aktarabilirsiniz svnadmin load
.
SVNBook'da ayrıntılı referans: "svnadmin kullanarak veri havuzu taşıma"
Temel olarak svn sunucusu durdurulmuşsa, depo klasörünü kopyalamak güvenlidir. (kaynak: https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khUBrys%5B1-25%5D )
Sunucuyu durdurma izniniz varsa, bunu yapın ve depoyu bir komut dosyasıyla veya bir yedekleme aracıyla kopyalayın. Cobian Backup, hizmetleri otomatik olarak durdurabildiği ve başlatabildiği için buraya çok iyi uyuyor ve artımlı yedeklemeler yapabiliyor, böylece yalnızca son zamanlarda değişen depo bölümlerini yedekliyorsunuz (depo büyükse ve uzak bir konuma yedekliyorsanız faydalıdır) ).
Misal:
Bir yedekleme görevi ekleyin:
Kaynağı depo klasörüne ayarlayın (ör. C:\Repositories\
),
Yedekleme öncesi olayı "STOP_SERVICE"
VisualSVN ekleyin ,
Yedekleme sonrası etkinliği ekle, "START_SERVICE"
VisualSVN,
Diğer seçenekleri gerektiği gibi ayarlayın. Eskilerin kaldırılması, yedekleme zamanlaması, hedef, sıkıştırma dahil olmak üzere artımlı yedeklemeler kurduk. arşiv bölme vb.
Kar!
bir svn sunucusunu yedeklemek için 2 ana yöntem vardır, ilk önce depo dosyalarınızın bir kopyasını oluşturacak hotcopy, bu yaklaşımla ilgili temel sorun, temel dosya sistemi hakkında veri kaydetmesidir, bu yüzden depolamayı denemede bazı zorluklar yaşayabilirsiniz başka bir svn sunucu türünde veya başka bir makinede bu tür bir yedekleme. dökümü adı verilen başka bir yedekleme türü vardır, bu yedekleme altta yatan dosya sistemi ve onun tigiris.org alt sürümüne dayalı herhangi bir SVN sunucusuna içilebilir herhangi bir bilgi kaydetmez.
yedekleme aracı hakkında komut isteminden svnadmin aracını (hotcopy ve dump yapabilir) kullanabilirsiniz, bu konsol svn sunucunuzun yaşadığı aynı dizinde bulunur veya svn yedekleme araçları için google.
benim tavsiyem, her iki yedekleme türünü de yapmanız ve bunları e-posta hesabınıza, amazon s3 hizmetine, ftp veya masmavi hizmetlere göndermenizdir, böylece svn sunucusunu bir yerde barındırmak zorunda kalmadan güvenli bir yedeklemeniz olur senin ofisin.
Burada yerel ve uzak yıkım depolarının bir dökümü yapmak için bir GUI Windows aracı:
https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html
Araç açıklaması şunları söylüyor:
Bu basit araç, yerel ve uzak bir çökme deposunun döküm yedeğini almanıza izin verir. Yazılım, "svnadmin" ile aynı şekilde çalışır, ancak üzerinde bir GUI ön ucu değildir. Bunun yerine, başka bir ek araç kullanmadan bağımsız modda döküm oluşturmanıza izin vermek için doğrudan alt sürüm kitaplıklarını kullanın.
Umarım bu yardım ...
Tüm repo dizinini yedekleme konumuma kopyalamak istiyorum. Bu şekilde, bir şey olursa, dizini geri kopyalayabilir ve hemen çalışmaya hazır olabilirsiniz.
Gerekirse izinleri koruduğunuzdan emin olun. Genellikle, bu sadece Linux makineleri için bir sorundur.
Barındırılan depolar için, svn 1.7 sürümünden beri kullanabilirsiniz svnrdump
, bu da svnadmin dump
yerel depolar ile benzerdir . Bu makale , esasen aşağıdakilere dayanan güzel bir gözden geçirme sağlar:
svnrdump dump /URL/to/remote/repository > myRepository.dump
Döküm dosyasını indirdikten sonra yerel olarak içe aktarabilirsiniz
svnadmin load /path/to/local/repository < myRepository.dump
veya seçtiğiniz ana bilgisayara yükleyin.
FSFS veri havuzu biçimini (varsayılan) kullanıyorsanız, yedekleme yapmak için veri havuzunun kendisini kopyalayabilirsiniz. Eski BerkleyDB sistemiyle, depo platformdan bağımsız değildir ve genellikle svnadmin dökümü kullanmak istersiniz.
Yedekleme için svnbook dokümantasyon konu önerir svnadmin hotcopy
kullanımda ve bu tür dosyaların gibi konularda ilgilenir gibi komutu.
@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
Bu, Yedeklerimi gerçekleştiren çalıştığım Toplu Dosya
Günlük ve tam yedekleme çözümü için buradaki SVN yedekleme komut dosyalarını kullanın .
Projemin uzak SVN deposunun bir yedeğini almak için izlediğim adımları derledim.
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
Bu zaman alır ve günlükleri depodan aldığını söyler. İçinde bir dosya kümesi oluşturur C:\Documents and Settings\nverma\.svk\local
.
Bu yerel havuzu uzaktaki en son değişikliklerle güncellemek için, zaman zaman önceki komutu çalıştırın.
Artık yerel bir deponuzla ( /home/user/.svk/local
bu örnekte) normal bir SVN deposu gibi oynayabilirsiniz !
Bu yaklaşımla ilgili tek sorun, yerel deponun uzak depodaki fiili revizyonun revizyon artışlarıyla oluşturulmasıdır. Birisinin yazdığı gibi:
Svk miror komutu, yeni oluşturulan depoda bir taahhüt oluşturur. Bu nedenle, sonraki senkronizasyon tarafından oluşturulan tüm taahhütlerin, halka açık depoya kıyasla revizyon sayıları bir artırılır.
Ancak, sadece uzak depo zaman zaman bazı yedekleme istedim, bu benim için Tamam, başka bir şey.
Doğrulama:
Doğrulamak için SVN istemcisini aşağıdaki gibi yerel havuzla kullanın:
svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/" <local-dir-path-to-checkout-onto>
Bu komut daha sonra yerel depodaki en son revizyonu kontrol etmeye gider. Sonunda diyor Checked out revision N
. Bu N
, uzak depoda bulunan gerçek revizyondan biriydi (yukarıda belirtilen sorundan dolayı).
Svk'nin tüm geçmişi de getirdiğini doğrulamak için, SVN kasası -r
2, 10, 50 vb. Kullanılarak çeşitli eski revizyonlarla gerçekleştirildi . Daha sonra içindeki dosyaların <local-dir-path-to-checkout-onto>
bu revizyondan olduğu doğrulandı.
Sonunda, dizini C:/Documents and Settings\nverma/.svk/local/
sıkıştırın ve zip'i bir yerde saklayın. Bunu düzenli olarak yapmaya devam edin.
Diğerlerinin söylediği gibi, Subversion ekibinden hot-backup.py sadece düz üzerinde bazı güzel özelliklere sahip svnadmin hotcopy
Makinedeki tüm depolarım için örümcekler içeren bir python betiğinde zamanlanmış bir görev çalıştırıyorum ve birkaç gün değerinde hotcopies (yolsuzluk paranoid) ve svnadmin svndump
uzak bir makinede tutmak için hotbackup kullanıyor . Restorasyon bundan gerçekten kolay - şimdiye kadar.
1.1 SVN (Subversion) deposundan Döküm Oluştur
svnadmin dump /path/to/reponame > /path/to/reponame.dump
Gerçek örnek
svnadmin dump /var/www/svn/testrepo > /backups/testrepo.dump
1.2 Gzip Oluşturulan Döküm
gzip -9 /path/to/reponame.dump
Gerçek örnek
gzip -9 /backups/testrepo.dump
1.3 Tek astarlı SVN Dökümü ve Gzip Dökümü
svnadmin dump /path/to/reponame | gzip -9 > /path/to/reponame.dump.gz
Gerçek örnek
svnadmin dump /var/www/svn/testrepo |Â gzip -9 > /backups/testrepo.dump.gz
Linux'ta SVN (Subversion) deposunu yedekleme (döküm) ve geri yükleme (yükleme).
Referans: svn subversion backup andrestore