Saya baru mengenal SVN dan saya ingin tahu metode apa yang tersedia untuk membuat cadangan repositori di lingkungan Windows?
Saya baru mengenal SVN dan saya ingin tahu metode apa yang tersedia untuk membuat cadangan repositori di lingkungan Windows?
Jawaban:
Anda dapat menggunakan sesuatu seperti (Linux):
svnadmin dump repositorypath | gzip > backupname.svn.gz
Karena Windows tidak mendukung GZip, itu hanya:
svnadmin dump repositorypath > backupname.svn
svnadmin dump repositorypath | "%ProgramFiles%\7-Zip\7z.exe" a backup.7z -sibackupname.svn
Ini akan membuat file bernama 'backup.7z' yang berisi satu file, 'backupname.svn', yang merupakan output dari svnadmin dump
.
for project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
Kami menggunakan hotcopy svnadmin, misalnya:
svnadmin hotcopy C:\svn\repo D:\backups\svn\repo
Sesuai buku :
Anda dapat menjalankan perintah ini kapan saja dan membuat salinan repositori yang aman, terlepas dari apakah proses lain menggunakan repositori.
Anda tentu saja dapat menyalin salinan cadangan (lebih disukai 7-Zip). IMHO Ini yang paling mudah dari opsi cadangan: jika terjadi bencana ada sedikit yang harus dilakukan selain unzip kembali ke posisi semula.
Ada skrip hotbackup.py yang tersedia di situs web Subversion yang cukup berguna untuk mengotomatisasi cadangan.
http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in
Berikut ini skrip Perl yang akan:
Naskah:
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`;
Sumber skrip dan detail lebih lanjut tentang rasional untuk jenis cadangan ini.
Saya menggunakan svnsync , yang mengatur server jauh sebagai mirror / slave. Kami memiliki server turun dua minggu yang lalu, dan saya dapat dengan mudah mengganti slave ke posisi utama (hanya harus mereset UUID pada repositori slave ke yang asli).
Manfaat lain adalah bahwa sinkronisasi dapat dijalankan oleh perantara, bukan sebagai tugas di kedua server. Saya punya klien untuk dua VPN yang menyinkronkan repositori di antara mereka.
svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
Sub-perintah ini membuat cadangan penuh "panas" dari repositori Anda, termasuk semua kait, file konfigurasi, dan, tentu saja, file database.
Anda dapat membuat cadangan repositori ( dump ) dengan svnadmin dump
.
Anda kemudian dapat mengimpornya menggunakan svnadmin load
.
Referensi terperinci di SVNBook: "Migrasi data repositori menggunakan svnadmin"
Pada dasarnya aman untuk menyalin folder repositori jika server svn dihentikan. (sumber: https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khUBrys%5B1-25%5D )
Jadi, jika Anda diizinkan untuk menghentikan server, lakukan dan salin repositori, baik dengan beberapa skrip atau alat cadangan. Cadangan Cobian cocok di sini karena dapat menghentikan dan memulai layanan secara otomatis, dan dapat melakukan pencadangan tambahan sehingga Anda hanya mencadangkan bagian repositori yang telah berubah baru-baru ini (berguna jika repositori besar dan Anda mencadangkan ke lokasi jauh ).
Contoh:
Tambahkan tugas cadangan:
Setel sumber ke folder repositori (mis. C:\Repositories\
),
Tambahkan "STOP_SERVICE"
VisualSVN acara pra-cadangan ,
Tambahkan acara pasca-pencadangan, "START_SERVICE"
VisualSVN,
Tetapkan opsi lain sesuai kebutuhan. Kami telah menyiapkan cadangan tambahan termasuk menghapus yang lama, jadwal cadangan, tujuan, termasuk kompresi. pemisahan arsip dll.
Keuntungan!
ada 2 metode utama untuk mem-backup server svn, pertama adalah hotcopy yang akan membuat salinan file repositori Anda, masalah utama dengan pendekatan ini adalah menyimpan data tentang sistem file yang mendasarinya, sehingga Anda mungkin mengalami beberapa kesulitan mencoba repostore jenis cadangan ini dalam jenis server svn lain atau mesin lain. ada jenis cadangan lain yang disebut dump, cadangan ini tidak akan menyimpan informasi apa pun dari sistem file yang mendasarinya dan dapat diminum ke segala jenis server SVN yang berbasis di subversi tigiris.org.
tentang alat cadangan Anda dapat menggunakan alat svnadmin (dapat melakukan hotcopy dan dump) dari command prompt, konsol ini berada di direktori yang sama di mana server svn Anda tinggal atau Anda dapat mencari alat cadangan svn di google.
rekomendasi saya adalah bahwa Anda melakukan kedua jenis cadangan dan membawanya keluar dari kantor ke akun email Anda, layanan amazon s3, ftp, atau layanan biru, dengan cara itu Anda akan memiliki cadangan yang aman tanpa harus meng-host server svn di suatu tempat di luar kantormu.
Di sini, alat GUI Windows untuk melakukan dump dari repositori lokal dan remote:
https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html
Deskripsi alat mengatakan:
Alat sederhana ini memungkinkan untuk membuat cadangan dump repositori subversi lokal dan jarak jauh. Perangkat lunak bekerja dengan cara yang sama dengan "svnadmin" tetapi bukan antarmuka GUI di atasnya. Alih-alih gunakan langsung pustaka subversi untuk memungkinkan membuat dump dalam mode mandiri tanpa alat tambahan lainnya.
Semoga ini bisa membantu ...
Saya suka menyalin seluruh direktori repo ke lokasi cadangan saya. Dengan begitu, jika sesuatu terjadi, Anda bisa menyalin direktori kembali dan siap untuk segera pergi.
Pastikan untuk menjaga izin, jika perlu. Biasanya, ini hanya masalah pada mesin Linux.
Untuk repositori yang di-host, Anda dapat sejak svn menggunakan versi 1.7 svnrdump
, yang analog dengan svnadmin dump
repositori lokal. Artikel ini menyediakan walk-through yang bagus, yang intinya bermuara pada:
svnrdump dump /URL/to/remote/repository > myRepository.dump
Setelah mengunduh file dump, Anda dapat mengimpornya secara lokal
svnadmin load /path/to/local/repository < myRepository.dump
atau unggah ke host pilihan Anda.
Jika Anda menggunakan format repositori FSFS (default), maka Anda dapat menyalin repositori itu sendiri untuk membuat cadangan. Dengan sistem BerkleyDB yang lebih lama, repositori tidak bebas platform dan Anda biasanya ingin menggunakan svnadmin dump.
The dokumentasi svnbook topik untuk cadangan merekomendasikan svnadmin hotcopy
perintah, karena akan mengurus masalah seperti file digunakan dan semacamnya.
@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
Ini adalah File Batch yang saya jalankan yang menjalankan Backups saya
Untuk solusi cadangan harian dan lengkap, gunakan saja skrip cadangan SVN di sini .
Saya telah mengkompilasi langkah-langkah yang saya ikuti untuk tujuan mengambil cadangan repositori SVN dari proyek saya.
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
Ini membutuhkan waktu dan mengatakan bahwa itu mengambil log dari repositori. Ini menciptakan satu set file di dalamnya C:\Documents and Settings\nverma\.svk\local
.
Untuk memperbarui repositori lokal ini dengan set perubahan terbaru dari jarak jauh, jalankan saja perintah sebelumnya dari waktu ke waktu.
Sekarang Anda dapat bermain dengan repositori lokal Anda (/home/user/.svk/local
dalam contoh ini) seolah-olah itu adalah repositori SVN normal!
Satu-satunya masalah dengan pendekatan ini adalah bahwa repositori lokal dibuat dengan peningkatan revisi oleh revisi aktual dalam repositori jarak jauh. Seperti seseorang menulis:
Perintah miror svk menghasilkan komit di repositori yang baru saja dibuat. Jadi semua komit yang dibuat oleh sinkronisasi selanjutnya akan memiliki angka revisi yang bertambah satu dibandingkan dengan repositori publik jarak jauh.
Tapi, ini tidak masalah bagi saya karena saya hanya ingin cadangan dari repositori jarak jauh dari waktu ke waktu, tidak ada yang lain.
Verifikasi:
Untuk memverifikasi, gunakan klien SVN dengan repositori lokal seperti ini:
svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/" <local-dir-path-to-checkout-onto>
Perintah ini kemudian digunakan untuk checkout revisi terbaru dari repositori lokal. Pada akhirnya dikatakan Checked out revision N
. IniN
adalah satu lebih dari revisi aktual yang ditemukan di repositori jarak jauh (karena masalah yang disebutkan di atas).
Untuk memverifikasi bahwa svk juga membawa semua sejarah, checkout SVN dijalankan dengan berbagai revisi lama menggunakan -r
dengan 2, 10, 50 dll. Lalu file-file di<local-dir-path-to-checkout-onto>
dikonfirmasi dari revisi itu.
Pada akhirnya, zip direktori C:/Documents and Settings\nverma/.svk/local/
dan simpan zip di suatu tempat. Terus lakukan ini secara teratur.
seperti yang orang lain katakan, hot-backup.py dari tim Subversion memiliki beberapa fitur bagus di atas sekadar polos svnadmin hotcopy
Saya menjalankan tugas yang dijadwalkan pada skrip python yang laba-laba untuk semua repositori saya di mesin, dan menggunakan hotbackup untuk menyimpan hotcopies (paranoid korupsi) selama beberapa hari dan svnadmin svndump
pada mesin jarak jauh. Restorasi sangat mudah dari itu - sejauh ini.
1.1 Membuat Dump dari repositori SVN (Subversion)
svnadmin dump /path/to/reponame > /path/to/reponame.dump
Contoh nyata
svnadmin dump /var/www/svn/testrepo > /backups/testrepo.dump
1.2 Gzip Dump yang Dibuat
gzip -9 /path/to/reponame.dump
Contoh nyata
gzip -9 /backups/testrepo.dump
1.3 Dump SVN dan Dump Gzip dengan One-liner
svnadmin dump /path/to/reponame | gzip -9 > /path/to/reponame.dump.gz
Contoh nyata
svnadmin dump /var/www/svn/testrepo |Â gzip -9 > /backups/testrepo.dump.gz
Cara Cadangkan (dump) dan Kembalikan (memuat) repositori SVN (Subversion) di Linux.
Ref: svn backup andrestore subversi