Có những cách nào để sao lưu kho lưu trữ cho Windows VisualSVN?


15

Tại thời điểm này, chúng tôi đang sử dụng Visual SVN và chúng tôi đang sao lưu toàn bộ thư mục kho lưu trữ cho visual svn. Điều này sao lưu toàn bộ dữ liệu cho từng kho lưu trữ bên trong công cụ svn của chúng tôi. Tôi tò mò liệu tôi có thể khôi phục các tệp đó trong trường hợp khẩn cấp hoặc thảm họa không? Bất kỳ ai trong số các bạn có kinh nghiệm với thủ tục phục hồi này? Cảm ơn.


1
Nếu bạn chưa thực sự kiểm tra phục hồi, thì bạn không thể tin tưởng vào bản sao lưu của mình.
Michael Hampton

Câu trả lời:


11

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

Điều đó chỉ ra tài liệu sau:
http://www.visualsvn.com/support/svnbook/reposeadmin/maint/#svn.reposeadmin.maint.backup

Nó mô tả bằng cách sử dụng các lệnh Subversion để sao lưu. Tôi hy vọng đây là những gì bạn đang làm vì việc sao lưu thư mục thẳng có thể dẫn đến việc có một kho lưu trữ không thể sử dụng được.

Bạn sẽ có thể sử dụng bản sao lưu từ Subversion và sử dụng svnadmin dumphoặc svnadmin hotcopylệnh để khôi phục kho lưu trữ đầy đủ. Tuy nhiên, như với bất kỳ chiến lược sao lưu nào, bạn phải tự kiểm tra việc khôi phục để chắc chắn rằng nó hoạt động cho bạn.


8

Bắt đầu với phiên bản VisualSVN Server 3.6, máy chủ bao gồm tính năng khôi phục và khôi phục kho lưu trữ theo lịch trình tích hợp . Hơn nữa, phiên bản 3.6 bổ sung xác minh theo lịch trình của kho SVN.

Thiết lập sao lưu và xác minh kho lưu trữ theo lịch trình cho kho lưu trữ Subversion của bạn chỉ trong vài phút. Để biết hướng dẫn từng bước, vui lòng xem bài viết KB106: Bắt đầu với Sao lưu và Khôi phục .

Nếu bạn tìm kiếm một bản sao lưu một lần, bạn có thể sử dụng lệnh ghép ngắn PowerShell của Backup-SvnRep repository . Để khôi phục kho lưu trữ, hãy sử dụng Khôi phục-SvnRep repository . Các lệnh ghép ngắn dự phòng này có sẵn bắt đầu với phiên bản 3.6.

Tải xuống phiên bản mới nhất của VisualSVN Server từ trang tải xuống chính .

nhập mô tả hình ảnh ở đây


Có một số phương pháp để sao lưu kho VisualSVN Server. Kiểm tra mô tả ngắn dưới đây.

1. svnadmin hotcopycông cụ

svnadmin hotcopycho phép bạn 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. Bạn có thể viết một tập lệnh tùy chỉnh sẽ thực hiện sao lưu cho các kho lưu trữ của bạn một cách thường xuyên.

Bạn có thể xem xét bài viết sau từ sách SVN để tìm hiểu thêm về sao lưu kho lưu trữ Subversion: http://www.visualsvn.com/support/svnbook/reposeadmin/maint/#svn.reposeadmin.maint.backup

2. svnsynccông cụ

Đây là phương pháp sao lưu gia tăng. Phương pháp sao lưu cộng dồn chỉ sao lưu phần dữ liệu lưu trữ đã thay đổi kể từ lần sao lưu trước. Bạn có thể thiết lập công cụ này để hoạt động như "chủ" và "nô lệ" và tự động sao chép mọi cam kết vào kho của nó.

Xem bài viết "svnsync" để biết thêm chi tiết: http://www.visualsvn.com/support/svnbook/ref/svnsync/

3. Sao lưu máy chủ Windows. Bạn có thể sử dụng Windows Server Backup để sao lưu kho Subversion. Nó cho phép bạn chia nhỏ các bản sao lưu thành một chia sẻ mạng, khối lượng sao lưu chuyên dụng, phương tiện có thể ghi. Ví dụ, wbadmincông cụ dòng lệnh cho phép bạn sao lưu an toàn các kho lưu trữ của mình. Lệnh đơn giản này thực hiện sao lưu một lần C:\foo\barvào X:\khối lượng:

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

(Để cài đặt Windows Server Backup, hãy chạy ocsetup WindowsServerBackuptrong dấu nhắc lệnh nâng cao).

Bạn có thể thiết lập sao lưu theo nhiều cách khác nhau:

Không bắt buộc phải dừng dịch vụ của máy chủ khi bạn chạy sao lưu vì phụ trợ kho lưu trữ FSFS luôn ở trạng thái nhất quán .

Dưới đây là các mẹo chung về khôi phục bản sao lưu Windows Server:

  1. Khôi phục các bản sao lưu vào một thư mục trống để đảm bảo rằng các tệp kho lưu trữ được khôi phục sẽ không trộn lẫn với các tệp của tệp bị hỏng. Sau khi kho lưu trữ nếu được khôi phục, bạn có thể xóa kho lưu trữ bị hỏng và sau đó thay thế nó bằng kho lưu trữ được khôi phục.

  2. Dừng máy chủ chu kỳ bắt đầu sau khi khôi phục kho lưu trữ từ bản sao lưu.

  3. Nếu khách hàng của bạn gặp lỗi sau khi khôi phục kho lưu trữ, hãy chạy svnadmin recoverlại với nó. Lệnh kết thúc ngay lập tức và làm cho kho lưu trữ có thể truy cập lại.


Ngoại trừ kho lưu trữ, bạn nên sao lưu các thông tin sau:

  1. Các tệp xác thực và ủy quyền được lưu trữ trong thư mục gốc của kho ( 'C: \ Kho' theo mặc định). Tùy thuộc vào cài đặt của bạn, nên có các tệp sau: 'authz' , 'authz-windows''htpasswd' .

  2. Thư mục "% VISUALSVN_SERVER% \ certs \" nơi lưu trữ thông tin về chứng chỉ SSL của bạn.

  3. Thư mục "% VISUALSVN_SERVER% \ conf \" nơi lưu trữ các tệp cấu hình của Máy chủ VisualSVN của bạn.

  4. Khóa đăng ký "HKEY_LOCAL_MACHINE \ SOFTWARE \ VisualSVN \ VisualSVN Server" nơi phần khác của cấu hình máy chủ được lưu trữ.


1
Đối với tùy chọn cuối cùng của bạn, bạn phải dừng dịch vụ svn, nếu không, bạn có nguy cơ sao lưu một repo trong đó có một cam kết hoạt động sẽ khiến bạn sao lưu bị hỏng.
Andy

5

Tôi đang làm điều đó bằng cách:

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

Ngoài ra, bạn có thể rar / zip nó để tiết kiệm không gian. Tôi đã sử dụng cùng một phương pháp khi tôi chuyển SVN từ Linux sang VisualSVN, vì vậy bản sao lưu này hoạt động như bình thường.


3

Cách dễ nhất và tốt nhất để tạo bản sao lưu của repo SVN là sử dụng svnsync . Đây là một công cụ gia tăng, phát lại bất kỳ cam kết nào đối với kho lưu trữ dự phòng. Thật dễ dàng để đi - xem bài đăng trên blog này - và nhanh chóng vì nó chỉ gửi thay đổi. Bạn sẽ phải thiết lập một móc thay đổi sau khi quay vòng để nắm bắt 'trường hợp cạnh' khi ai đó cập nhật một bản sao lưu lịch sử, nhưng nếu không, bạn có thể chạy nó hàng giờ (như tôi làm) để liên tục sao lưu. bạn thậm chí có thể chạy nó trong hook post-commit nếu bạn thực sự hoang tưởng về sao lưu dữ liệu!

Nếu repo trực tiếp của bạn chết, bạn có thể chỉ cần "di chuyển svn" sang repo dự phòng cho đến khi bạn có một live của bạn chạy lại (mặc dù vậy, hãy cẩn thận nếu bạn viết bất cứ điều gì vào bản sao lưu trong khi live bị tắt trừ khi bạn chạy svnsync để lấy chúng những thay đổi được áp dụng cho repo trực tiếp, điều này khá rõ ràng khi bạn nghĩ về nó).

Vì vậy, bạn có các bản sao lưu liên tục và thời gian chết được đo bằng giây với việc sử dụng tài nguyên tối thiểu. Sao lưu không nhận được nhiều hơn thế!


3

Một lựa chọn khác là hotcopy . Nó làm cho một bản sao lưu của toàn bộ kho lưu trữ của bạn. Chiếm nhiều không gian đĩa hơn, nhưng rất dễ chạy và cũng rất dễ khôi phục kho lưu trữ bằng cách này.


2

VisualSVN là một sản phẩm Windows nên nó sẽ chạy trên Windows. Nếu tiện ích sao lưu có thể sử dụng Volume Shadow Copy để tạo bản sao lưu, thì điều đó sẽ tạo ra một bản sao lưu nhất quán nội bộ. Phần mềm NTBACKUP hoặc bên thứ ba tích hợp như Symantec Backup Exec hoặc các công cụ sao lưu dựa trên đĩa được tích hợp trong Windows Server 2008 đều có khả năng sử dụng Volume Shadow Copy.


Điều này sẽ không được giao dịch âm thanh. Bạn cần phải lấy máy chủ để thực hiện sao lưu bằng cách này hay cách khác, giống như bạn làm với bất kỳ cơ sở dữ liệu nào.
David Heffernan

Trong trường hợp của SQL Server, thì các bản sao lưu dựa trên VSS trên thực tế là an toàn trong giao dịch. Trong trường hợp máy chủ VisualSVN, người ta sẽ hy vọng rằng với tư cách là máy chủ chạy Windows, nó sẽ hoạt động chính xác khi được sao lưu bởi một trong các giải pháp sao lưu windows tiêu chuẩn, giống như SQL Server. Tôi không có bằng chứng nào cho thấy nó có hay không.
Tim Long

Tôi nghi ngờ điều đó. VisualSVN chỉ đơn giản là svn đóng gói. Tôi chưa bao giờ thấy bất kỳ dấu hiệu nào cho thấy nó có bản sao lưu tích hợp với VSS.
David Heffernan

0

Đối với những người chỉ muốn sao lưu tất cả các kho lưu trữ trong bản cài đặt mặc định của Visual SVN trên hệ thống Windows

Tôi sử dụng tập lệnh cmd sau - Nó kết xuất tất cả các thư mục con của kho lưu trữ gốc vào đường dẫn sao lưu và 7-zip chúng.

@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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.