Dump de backup do Subversion - só precisa de algo muito simples

1

Eu tenho este comando que me dizem que fará um backup completo do Subversion (diga-me se isso não é verdade):

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

Eu não sou uma pessoa Linux. Eu simplesmente quero que ele corra todas as noites às 19h e sobrescreva o arquivo todas as noites. Demora um bom tempo para rodar (em torno de 4-5 horas criando em torno de um arquivo de 28GB)

Alguém pode me dizer como configurá-lo como um trabalho cron no Linux como usuário root? (É o Gentoo, se isso importa)

Se for mais fácil executar uma tarefa do Windows a partir do "servidor de backup", deixe-me saber como criar essa tarefa para remoto por meio do SSH e executar esse comando como o usuário raiz.

Obrigado!

P.S. se houver uma maneira melhor / mais fácil de fazer o backup de um SVN grande, por favor me avise ... Eu não sei nada sobre o Subversion, mas ainda estou com dificuldades para lidar com isso.

    
por TheCleaner 14.08.2012 / 20:55

2 respostas

2

Seu comando funcionará.

Crie um script de despejo como svndump.sh

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

Edite o arquivo Crontab crontab -e add

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

todos os dias às 19h, isso despejará seu arquivo

No Windows, crie um arquivo bat como

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"

Adicione este arquivo aos trabalhos agendados para que o tempo desejado seja executado.

    
por 14.08.2012 / 21:24
1

svnadmin dump deve funcionar, mas você também pode usar svnandmin hotcopy . Eu uso o seguinte script do cron para fazer backup de vários repositórios, compactá-los e manter os últimos dias:

#!/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
    
por 14.08.2012 / 21:10

Tags