Tôi mới sử dụng SVN và tôi muốn biết phương pháp nào có sẵn để sao lưu kho trong môi trường Windows?
Tôi mới sử dụng SVN và tôi muốn biết phương pháp nào có sẵn để sao lưu kho trong môi trường Windows?
Câu trả lời:
Bạn có thể sử dụng một cái gì đó như (Linux):
svnadmin dump repositorypath | gzip > backupname.svn.gz
Vì Windows không hỗ trợ GZip, nó chỉ là:
svnadmin dump repositorypath > backupname.svn
svnadmin dump repositorypath | "%ProgramFiles%\7-Zip\7z.exe" a backup.7z -sibackupname.svn
Điều này sẽ tạo một tệp có tên 'backup.7z' chứa một tệp duy nhất, 'backupname.svn', là đầu ra từ svnadmin dump
.
for project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
Chúng tôi sử dụng hotcopy svnadmin, vd:
svnadmin hotcopy C:\svn\repo D:\backups\svn\repo
Theo cuốn sách :
Bạn có thể chạy lệnh này bất cứ lúc nào và tạo một bản sao an toàn của kho lưu trữ, bất kể các quy trình khác có đang sử dụng kho lưu trữ hay không.
Tất nhiên bạn có thể ZIP (tốt nhất là 7-Zip) bản sao lưu. IMHO Đây là cách đơn giản nhất trong các tùy chọn sao lưu: trong trường hợp có thảm họa, có rất ít việc phải làm ngoài việc giải nén nó trở lại vị trí.
Có một tập lệnh hotbackup.py có sẵn trên trang web Subversion khá tiện dụng để tự động sao lưu.
http://svn.apache.org/repose/asf/subversion/trunk/tools/backup/hot-backup.py.in
Đây là một kịch bản Perl sẽ:
Kịch bản:
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`;
Nguồn script và biết thêm chi tiết về tính hợp lý cho loại sao lưu này.
Tôi sử dụng svnsync , thiết lập một máy chủ từ xa làm máy nhân bản / nô lệ. Chúng tôi đã có một máy chủ ngừng hoạt động hai tuần trước và tôi có thể chuyển đổi nô lệ sang vị trí chính khá dễ dàng (chỉ phải đặt lại UUID trên kho lưu trữ nô lệ thành bản gốc).
Một lợi ích khác là đồng bộ hóa có thể được điều hành bởi một người trung gian, chứ không phải là một nhiệm vụ trên một trong hai máy chủ. Tôi đã có một máy khách để hai VPN đồng bộ hóa một kho lưu trữ giữa chúng.
svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
Tiểu ban này tạo ra một bản sao lưu đầy đủ các hot hot của kho lưu trữ của bạn, bao gồm tất cả các hook, các tệp cấu hình và, tất nhiên, các tệp cơ sở dữ liệu.
Bạn có thể tạo một bản sao lưu kho lưu trữ ( kết xuất ) với svnadmin dump
.
Sau đó bạn có thể nhập nó bằng cách sử dụng svnadmin load
.
Tham khảo chi tiết trong SVNBook: "Di chuyển dữ liệu lưu trữ bằng svnadmin"
Về cơ bản, an toàn để sao chép thư mục kho lưu trữ nếu máy chủ svn bị dừng. (nguồn: https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khUBrys%5B1-25%5D )
Vì vậy, nếu bạn được phép dừng máy chủ, hãy thực hiện và chỉ sao chép kho lưu trữ, với một số tập lệnh hoặc công cụ sao lưu. Sao lưu Cobian phù hợp ở đây vì nó có thể tự động dừng và khởi động dịch vụ và nó có thể sao lưu gia tăng để bạn chỉ sao lưu các phần của kho lưu trữ đã thay đổi gần đây (hữu ích nếu kho lưu trữ lớn và bạn đang sao lưu vào vị trí từ xa ).
Thí dụ:
Thêm một nhiệm vụ sao lưu:
Đặt nguồn vào thư mục kho lưu trữ (ví dụ C:\Repositories\
),
Thêm sự kiện dự phòng trước "STOP_SERVICE"
VisualSVN,
Thêm sự kiện hậu sao lưu, "START_SERVICE"
VisualSVN,
Đặt các tùy chọn khác khi cần thiết. Chúng tôi đã thiết lập các bản sao lưu gia tăng bao gồm loại bỏ các bản cũ, lịch sao lưu, đích, bao gồm nén. lưu trữ chia tách, vv
Lợi nhuận!
Có 2 phương pháp chính để sao lưu máy chủ svn, đầu tiên là hotcopy sẽ tạo một bản sao của tệp lưu trữ của bạn, vấn đề chính với cách tiếp cận này là nó lưu dữ liệu về hệ thống tệp cơ bản, do đó bạn có thể gặp khó khăn khi cố gắng đăng lại loại sao lưu này trong một loại máy chủ svn khác hoặc máy khác. có một loại sao lưu khác gọi là dump, bản sao lưu này sẽ không lưu bất kỳ thông tin nào của hệ thống tệp cơ bản và có thể sử dụng được cho bất kỳ loại máy chủ SVN nào dựa trên lật đổ tigiris.org.
về công cụ sao lưu, bạn có thể sử dụng công cụ svnadmin (nó có thể thực hiện hotcopy và dump) từ dấu nhắc lệnh, bảng điều khiển này nằm trong cùng thư mục nơi máy chủ svn của bạn sống hoặc bạn có thể google cho các công cụ sao lưu svn.
Lời khuyên của tôi là bạn nên thực hiện cả hai loại sao lưu và đưa chúng ra khỏi văn phòng để gửi email, dịch vụ amazon s3, ftp hoặc azure, theo cách đó bạn sẽ có một bản sao lưu bảo mật mà không phải lưu trữ máy chủ svn ở đâu đó văn phòng của bạn.
Ở đây một công cụ GUI Windows để tạo một kho lưu trữ lật đổ cục bộ và từ xa:
https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html
Mô tả công cụ cho biết:
Công cụ đơn giản này cho phép tạo một bản sao lưu kết xuất của kho lưu trữ lật đổ cục bộ và từ xa. Phần mềm hoạt động theo cùng một cách của "svnadmin" nhưng không phải là giao diện GUI trên nó. Thay vào đó, hãy sử dụng trực tiếp các thư viện lật đổ để cho phép tạo kết xuất trong chế độ độc lập mà không cần bất kỳ công cụ bổ sung nào khác.
Hy vọng điều này giúp đỡ...
Tôi muốn chỉ sao chép toàn bộ thư mục repo vào vị trí sao lưu của tôi. Bằng cách đó, nếu có điều gì đó xảy ra, bạn có thể sao chép thư mục trở lại và sẵn sàng để đi ngay lập tức.
Chỉ cần đảm bảo duy trì quyền, nếu cần. Thông thường, đây chỉ là mối quan tâm trên các máy Linux.
Đối với các kho lưu trữ được lưu trữ, bạn có thể sử dụng phiên bản svn 1.7 svnrdump
, tương tự svnadmin dump
với các kho lưu trữ cục bộ. Bài viết này cung cấp một hướng dẫn tốt đẹp, về cơ bản nắm rõ:
svnrdump dump /URL/to/remote/repository > myRepository.dump
Sau khi bạn đã tải xuống tệp kết xuất, bạn có thể nhập tệp cục bộ
svnadmin load /path/to/local/repository < myRepository.dump
hoặc tải nó lên máy chủ của sự lựa chọn của bạn.
Nếu bạn đang sử dụng định dạng kho lưu trữ FSFS (mặc định), thì bạn có thể sao chép chính kho lưu trữ để tạo bản sao lưu. Với hệ thống BerkleyDB cũ hơn, kho lưu trữ không độc lập với nền tảng và bạn thường muốn sử dụng kết xuất svnadmin.
Các chủ đề tài liệu svnbook để sao lưu đề nghị các svnadmin hotcopy
lệnh, vì nó sẽ chăm sóc các vấn đề như tập tin trong sử dụng và như vậy.
@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
Đây là Batch File tôi đang chạy để thực hiện Sao lưu của mình
Đối với giải pháp sao lưu hàng ngày và đầy đủ, chỉ cần sử dụng các tập lệnh sao lưu SVN tại đây .
Tôi đã biên soạn các bước tôi làm theo với mục đích lấy bản sao lưu của kho SVN từ xa trong dự án của tôi.
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
Điều này cần có thời gian và nói rằng nó đang tìm nạp các bản ghi từ kho lưu trữ. Nó tạo ra một tập hợp các tập tin bên trong C:\Documents and Settings\nverma\.svk\local
.
Để cập nhật kho lưu trữ cục bộ này với bộ thay đổi mới nhất từ bộ điều khiển từ xa, thỉnh thoảng chỉ cần chạy lệnh trước đó.
Bây giờ bạn có thể chơi với kho lưu trữ cục bộ của bạn (/home/user/.svk/local
trong ví dụ này) như thể nó là một kho lưu trữ SVN bình thường!
Vấn đề duy nhất với cách tiếp cận này là kho lưu trữ cục bộ được tạo ra với sự gia tăng sửa đổi bằng cách sửa đổi thực tế trong kho lưu trữ từ xa. Như ai đó đã viết:
Lệnh Svk miror tạo ra một cam kết trong kho lưu trữ vừa tạo. Vì vậy, tất cả các cam kết được tạo bởi đồng bộ hóa tiếp theo sẽ có số sửa đổi tăng lên một so với kho lưu trữ công cộng từ xa.
Nhưng, điều này là ổn đối với tôi vì tôi chỉ muốn một số bản sao lưu của kho lưu trữ từ xa theo thời gian, không có gì khác.
Xác minh:
Để xác minh, sử dụng máy khách SVN với kho lưu trữ cục bộ như thế này:
svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/" <local-dir-path-to-checkout-onto>
Lệnh này sau đó đi kiểm tra bản sửa đổi mới nhất từ kho lưu trữ cục bộ. Cuối cùng nó nói Checked out revision N
. Điều nàyN
là một trong nhiều hơn so với sửa đổi thực tế được tìm thấy trong kho lưu trữ từ xa (do vấn đề được đề cập ở trên).
Để xác minh rằng Svk cũng đã mang tất cả lịch sử, thanh toán SVN đã được chạy với nhiều phiên bản cũ hơn sử dụng -r
với 2, 10, 50, v.v. Sau đó, các tệp trong<local-dir-path-to-checkout-onto>
được xác nhận là từ bản sửa đổi đó.
Cuối cùng, zip thư mục C:/Documents and Settings\nverma/.svk/local/
và lưu trữ zip ở đâu đó. Hãy làm điều này thường xuyên.
như những người khác đã nói, hot-backup.py từ nhóm Subversion có một số tính năng hay không chỉ đơn giản svnadmin hotcopy
Tôi chạy một tác vụ theo lịch trình trên một kịch bản python giúp thu thập tất cả các kho lưu trữ của tôi trên máy và sử dụng hotbackup để giữ các bản sao nóng giá trị trong vài ngày (hoang tưởng về tham nhũng) và svnadmin svndump
trên một máy từ xa. Phục hồi thực sự dễ dàng từ đó - cho đến nay.
1.1 Tạo kết xuất từ kho SVN (Subversion)
svnadmin dump /path/to/reponame > /path/to/reponame.dump
Ví dụ thực tế
svnadmin dump /var/www/svn/testrepo > /backups/testrepo.dump
1.2 Gzip đã tạo
gzip -9 /path/to/reponame.dump
Ví dụ thực tế
gzip -9 /backups/testrepo.dump
1.3 SVN Dump và Gzip Dump với One-liner
svnadmin dump /path/to/reponame | gzip -9 > /path/to/reponame.dump.gz
Ví dụ thực tế
svnadmin dump /var/www/svn/testrepo |Â gzip -9 > /backups/testrepo.dump.gz
Cách sao lưu (kết xuất) và khôi phục (tải) kho SVN (Subversion) trên Linux.
Tham chiếu: svn sao lưu dự phòng và thay thế