2 votes

vidage de sauvegarde de Subversion - besoin de quelque chose de très simple

J'ai cette commande qui, me dit-on, fera une sauvegarde complète de Subversion (dites-moi si c'est faux) :

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

Je ne suis pas un fan de Linux. Je veux simplement qu'il s'exécute tous les soirs à 19 heures et qu'il écrase le fichier tous les soirs. Cela prend un certain temps à s'exécuter (environ 4-5 heures pour créer un fichier de 28 Go).

Quelqu'un peut-il me dire comment le configurer comme une tâche cron sous Linux en tant qu'utilisateur root (c'est Gentoo si cela a de l'importance) ?

S'il est plus facile d'exécuter une tâche Windows à partir du "serveur de sauvegarde", dites-moi comment créer cette tâche pour se connecter à distance via SSH et exécuter cette commande en tant qu'utilisateur root.

Merci !

P.S. s'il existe un moyen meilleur/plus facile de sauvegarder un gros SVN, faites-le moi savoir... Je ne connais rien à Subversion mais je suis toujours coincé à m'en occuper.

3voto

usher Points 35

Votre commande va fonctionner.

Créer un script de vidage tel que svndump.sh

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

Modifier le fichier Crontab crontab -e ajouter

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

tous les jours à 19 heures, cela va vider votre fichier

Sous Windows, créez un fichier bat tel que

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"

Ajoutez ce fichier aux travaux planifiés pour le temps d'exécution souhaité.

2voto

Gerald Combs Points 6281

svnadmin dump devrait fonctionner mais vous pouvez aussi utiliser svnandmin hotcopy . J'utilise le script suivant de cron pour sauvegarder plusieurs dépôts, les compresser et conserver les derniers jours :

#!/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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X