Subversion 备份转储 - 只需要一些非常简单的东西

Subversion 备份转储 - 只需要一些非常简单的东西

我有这个命令,它告诉我将对 Subversion 进行完整备份(如果不是这样请告诉我):

svnadmin dump /shared/svnrepos | gzip /shared/backup/snvfull.svn.gz

我不是 Linux 用户。我只是希望它每晚 7 点运行并每晚覆盖文件。但它需要相当长的时间才能运行(大约 4-5 小时创建一个 28GB 的​​文件)

有人能告诉我如何以 root 用户身份在 Linux 中将其设置为 cron 作业吗?(如果这很重要的话,那就是 Gentoo)

如果从“备份服务器”运行 Windows 任务更容易,只需告诉我如何通过 SSH 创建远程任务并以 root 用户身份运行该命令。

谢谢你!

PS,如果有更好/更简单的方法来备份大型 SVN,请告诉我...我对 Subversion 一无所知,但我仍然无法处理它。

答案1

你的命令将会起作用。

创建转储脚本,例如 svndump.sh

#!/bin/bash
date=`date +%Y-%m-%d`
svnadmin dump /shared/svnrepos | gzip /shared/backup/snvfull_$date.svn.gz

编辑 Crontab 文件crontab -e添加

0 19 * * * root /path-to-svn-dump/svndump.sh file 

每天晚上 7 点,这将转储你的文件

在 Windows 上创建一个 bat 文件,例如

for /F "tokens=6,7,8 delims=/ " %%i in ('echo.^|date^|find "current" ') do set today=%%k%%j%%i

set backupdate=%today%
cd "C:\backups\svn"

svnadmin dump "C:\svn_repository\your_repo" > "C:\backups\svn\yourbackup_%backupdate%.svn"

将此文件添加到计划作业中以便在所需时间运行。

答案2

svnadmin dump应该可以工作,但您也可以使用svnandmin hotcopy。我使用以下来自 cron 的脚本来备份多个存储库,压缩它们并保留最近几天的内容:

#!/bin/sh
#
# Backup-svn: Back up each repository under /svn using 'svnadmin hotcopy'.

svn_dir=/my/svn/directory
backup_dir=/my/svn/backup/directory
date_stamp=`date +%Y-%m-%d`
repo_list=`ls -d $svn_dir/*/conf | sed -e "s:^$svn_dir/::" -e 's:/conf$::'`
keep_days=5

renice 5 -p $$ > /dev/null 2>&1
ionice -c 3 -p $$ > /dev/null 2>&1

cd $backup_dir

for repo in $repo_list ; do
        dest=$repo-$date_stamp
    dest_tmp=$backup_dir/$dest

    rm -rf $dest_tmp

    date +"%F %T: Starting hotcopy for $repo"
    svnadmin hotcopy $svn_dir/$repo $dest_tmp

    date +"%F %T: Archiving $repo"
    tar -czf $dest.tar.gz $dest_tmp
    du -sh $dest.tar.gz $dest_tmp

    date +"%F %T: Removing $repo"
    rm -rf $dest_tmp &

    for old_backup in `ls $repo-2*.tar.gz | sort -r | sed "1,${keep_days}d"` ; do
        date +"%F %T: Removing $old_backup"
        rm $old_backup
    done
done

相关内容