2010-03-02 11 views

Trả lời

11

Khám phá Repository Maintenance chương trong Sách về cách kéo đổ khỏi kho. Sau đó, hãy sử dụng dịch vụ được hẹn giờ (at hoặc cron ví dụ hoặc bộ lập lịch tác vụ rất đẹp trong Windows OS, tùy thuộc vào hệ thống của máy chủ) để thực hiện kết xuất hàng đêm. Làm xong.

+0

tùy thuộc vào kích thước của kho lưu trữ không phải là phương pháp tốt nhất để thực hiện việc này, vì việc tạo bãi chứa và khôi phục kết xuất sẽ mất một thời gian. Bạn nên sử dụng svnadmin hotcopy –

+0

liên kết tới SVNBook chuyển sang phiên bản lỗi thời – bahrep

1

Tôi vừa viết kịch bản ngắn để thực hiện công việc. Lần chạy đầu tiên thực hiện sao lưu toàn bộ, mọi lần chạy tiếp theo chỉ làm tăng số lần commit cuối cùng trong lần sao lưu cuối cùng. các tệp sao lưu sẽ nhận được số lần sửa đổi cuối cùng để theo dõi quy trình.

Thiết lập cài đặt đúng cho

WORKDIR=path to where this script resists

SVN_REPO_LOCATION=path to where the repository resists on hd

BACKUPDIR=path to where the backup should goes to

SVN_LOACTION=root location which you use in your svn command

và thêm đoạn mã để cronjob, thats nó.

#!/bin/bash 
WORKDIR=/home/user/svnbackup 
SVN_REPO_LOCATION=/opt/svn 
BACKUPDIR=./backup 
SVN_LOACTION=https://mysvn.server.com/svn 

cd $WORKDIR; 
CURRENT_VERSION=`svn info $SVN_LOACTION | grep Revision | awk '{print $2}'` 
LAST_VERSION=`cat svn.version 2>/dev/null` 
mkdir -p $BACKUPDIR; 
if [ "$LAST_VERSION" = "" ] 
then 
     echo fullbackup; 
     svnadmin dump -q $SVN_REPO_LOCATION > $BACKUPDIR/svn_backup_$CURRENT_VERSION.dump; 
     echo $CURRENT_VERSION > svn.version; 
else 
     if [ "$LAST_VERSION" == "$CURRENT_VERSION" ] 
     then 
       echo backup not necessary; 
     else 
       echo incremental; 
       svnadmin dump -q $SVN_REPO_LOCATION -r$LAST_VERSION:$CURRENT_VERSION --incremental > $BACKUPDIR/svn_backup_$CURRENT_VERSION.dump; 
       echo $CURRENT_VERSION > svn.version; 
     fi 
fi