Apa cara yang ada untuk membuat cadangan repositori untuk Windows VisualSVN?

15

Saat ini kami menggunakan Visual SVN dan kami mencadangkan seluruh direktori repositori untuk svn visual. Ini mencadangkan seluruh data untuk setiap repositori di dalam mesin svn kami. Saya ingin tahu apakah saya dapat memulihkan file-file tersebut jika terjadi keadaan darurat atau bencana? Adakah dari Anda yang memiliki pengalaman dengan prosedur restorasi ini? Terima kasih.

Geo
sumber
1
Jika Anda belum benar-benar menguji pemulihan, maka Anda tidak mungkin memiliki kepercayaan pada cadangan Anda.
Michael Hampton

Jawaban:

11

Lihat: http://www.visualsvn.com/support/topic/00012/

Itu menunjuk ke dokumentasi berikut:
http://www.visualsvn.com/support/svnbook/reposadmin/maint/#svn.reposadmin.maint.backup

Ini menjelaskan menggunakan perintah Subversion untuk mengambil cadangan. Saya harap ini adalah apa yang Anda lakukan karena mengambil cadangan direktori langsung dapat menghasilkan repositori yang tidak dapat digunakan.

Anda harus dapat menggunakan cadangan dari Subversion dan menggunakan svnadmin dumpatau svnadmin hotcopyperintah untuk mengembalikan repositori penuh. Namun, seperti halnya strategi cadangan apa pun, Anda harus menguji pemulihan sendiri untuk memastikan itu berhasil untuk Anda.

DCNYAM
sumber
8

Dimulai dengan versi VisualSVN Server 3.6, server menyertakan fitur cadangan dan pemulihan repositori terjadwal bawaan . Selain itu, rilis 3.6 menambahkan verifikasi terjadwal repositori SVN.

Menyiapkan cadangan repositori terjadwal dan verifikasi untuk repositori Subversion Anda hanya dalam hitungan menit. Untuk petunjuk langkah demi langkah, silakan lihat artikel KB106: Memulai dengan Pencadangan dan Pemulihan .

Jika Anda mencari cadangan satu kali, Anda bisa menggunakan cmdlet Cadangan-SvnRepository PowerShell. Untuk memulihkan repositori, gunakan Restore-SvnRepository . Cmdlet cadangan ini tersedia mulai dengan versi 3.6.

Unduh versi terbaru dari VisualSVN Server dari halaman unduhan utama .

masukkan deskripsi gambar di sini


Ada beberapa metode untuk membuat cadangan repositori VisualSVN Server. Lihat deskripsi singkat di bawah ini.

1. svnadmin hotcopyalat

svnadmin hotcopymemungkinkan Anda membuat salinan repositori yang aman, terlepas dari apakah proses lain menggunakan repositori. Anda dapat menulis skrip khusus yang akan melakukan pencadangan untuk repositori Anda secara teratur.

Anda dapat mempertimbangkan artikel berikut dari buku SVN untuk mempelajari lebih lanjut tentang cadangan repositori Subversion: http://www.visualsvn.com/support/svnbook/reposadmin/maint/#svn.reposadmin.maint.backup

2. svnsyncalat

Ini adalah metode cadangan tambahan. Metode cadangan tambahan hanya mem-backup bagian dari data repositori yang telah berubah sejak cadangan sebelumnya. Anda dapat mengatur alat ini agar berfungsi sebagai "master" dan "slave" dan menduplikasi komit ke repositori secara otomatis.

Lihat artikel "svnsync" untuk rincian lebih lanjut: http://www.visualsvn.com/support/svnbook/ref/svnsync/

3. Cadangan Server Windows. Anda dapat menggunakan Windows Server Backup untuk membuat cadangan repositori Subversion. Ini memungkinkan Anda untuk menjadwalkan backup ke jaringan, volume cadangan khusus, media yang dapat ditulisi. Misalnya, wbadminalat baris perintah memungkinkan Anda membuat cadangan repositori dengan aman. Perintah sederhana ini melakukan cadangan salinan satu kali C:\foo\barke X:\volume:

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

(Untuk menginstal Windows Server Backup, jalankan ocsetup WindowsServerBackupdi command-prompt yang ditinggikan).

Anda dapat mengatur cadangan dengan berbagai cara:

Tidak diperlukan untuk menghentikan layanan server ketika Anda menjalankan cadangan karena backend repositori FSFS selalu dalam keadaan konsisten .

Berikut tips umum tentang memulihkan cadangan Windows Server:

  1. Pulihkan cadangan ke direktori kosong untuk memastikan bahwa file repositori yang dipulihkan tidak akan bercampur dengan file yang rusak. Setelah repositori jika dipulihkan, Anda dapat menghapus repositori yang rusak dan kemudian menggantinya dengan yang dipulihkan.

  2. Stop-start server siklus setelah memulihkan repositori dari cadangan.

  3. Jika klien Anda mendapatkan kesalahan setelah repositori pulih, jalankan svnadmin recovermelawannya. Perintah selesai secara instan dan membuat repositori dapat diakses kembali.


Kecuali repositori, Anda harus mencadangkan informasi berikut:

  1. File autentikasi dan otorisasi yang disimpan di root repositori ( 'C: \ Repositori' secara default). Tergantung pada pengaturan Anda, harus ada file berikut: 'authz' , 'authz-windows' dan 'htpasswd' .

  2. "% VISUALSVN_SERVER% \ certs \" folder tempat informasi tentang sertifikat SSL Anda disimpan.

  3. "% VISUALSVN_SERVER% \ conf \" folder tempat file konfigurasi Server VisualSVN Anda disimpan.

  4. Kunci registri "HKEY_LOCAL_MACHINE \ SOFTWARE \ VisualSVN \ VisualSVN" tempat bagian lain dari konfigurasi server disimpan.

bahrep
sumber
1
Untuk opsi terakhir Anda, Anda harus menghentikan layanan svn, jika tidak, Anda berisiko membuat cadangan repo di mana ada komit aktif yang akan membuat Anda cadangan rusak.
Andy
5

Saya melakukannya dengan:

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

Anda juga dapat rar / zip untuk menghemat ruang. Saya menggunakan metode yang sama ketika saya memindahkan SVN dari Linux ke VisualSVN, jadi cadangan ini berfungsi sebagaimana mestinya.

Alex
sumber
3

Cara termudah dan terbaik untuk membuat cadangan repo SVN adalah dengan menggunakan svnsync . Ini merupakan alat tambahan yang memutar komit ke repositori cadangan. Mudah untuk memulai - lihat posting blog ini - dan cepat karena hanya mengirim perubahan. Anda harus mengatur kait post-rev-prop-change untuk menangkap 'kasus tepi' ketika seseorang memperbarui revprop historis, tetapi jika tidak, Anda dapat menjalankannya setiap jam (seperti yang saya lakukan) untuk menjaga cadangan terus menerus. Anda bahkan dapat menjalankannya di post-commit hook jika Anda benar-benar paranoid tentang cadangan data!

Jika repo langsung Anda mati, Anda kemudian dapat "svn relokasi" ke repo cadangan sampai Anda menjalankannya kembali (meskipun, berhati-hatilah jika Anda menulis sesuatu ke cadangan saat siaran langsung turun kecuali Anda menjalankan svnsync untuk mendapatkan yang tersebut perubahan diterapkan pada repo langsung, yang sangat jelas ketika Anda memikirkannya).

Jadi, Anda memiliki cadangan terus-menerus, dan waktu henti diukur dalam hitungan detik menggunakannya dengan penggunaan sumber daya minimal. Backup tidak menjadi lebih baik dari itu!

gbjbaanb
sumber
3

Pilihan lain adalah hotcopy . Itu membuat cadangan dari seluruh repositori Anda. Membutuhkan lebih banyak ruang disk, tetapi sangat mudah dijalankan dan juga sangat mudah untuk mengembalikan repositori menggunakan ini.

swolff1978
sumber
2

VisualSVN adalah produk Windows sehingga akan berjalan pada Windows. Jika utilitas cadangan dapat menggunakan Volume Shadow Copy untuk membuat cadangan, maka itu akan menghasilkan cadangan yang konsisten secara internal. NTBACKUP bawaan atau perangkat lunak pihak ketiga seperti Symantec Backup Exec, atau alat cadangan berbasis disk yang dibangun ke dalam Windows Server 2008 semuanya mampu menggunakan Volume Shadow Copy.

Tim Long
sumber
Ini tidak akan terdengar secara transaksi. Anda perlu mendapatkan server untuk melakukan pencadangan dengan satu atau lain cara, sama seperti yang Anda lakukan untuk basis data apa pun.
David Heffernan
Dalam kasus SQL Server, maka cadangan berbasis VSS sebenarnya aman secara transaksi. Dalam kasus server VisualSVN, orang akan berharap bahwa sebagai server berbasis Windows, itu akan berperilaku dengan benar ketika didukung oleh salah satu solusi cadangan windows standar, seperti SQL Server. Saya tidak punya bukti untuk menunjukkan apakah itu benar atau tidak.
Tim Long
Aku meragukan itu. VisualSVN hanya svn dikemas. Saya belum pernah melihat indikasi bahwa ia memiliki cadangan yang terintegrasi dengan VSS.
David Heffernan
0

Bagi mereka yang hanya ingin mencadangkan semua repositori dalam instalasi default Visual SVN pada sistem Windows

Saya menggunakan skrip cmd berikut - Ini membuang semua sub folder dari akar repositori ke jalur cadangan dan 7-zip mereka.

@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
Jizzle
sumber