Reading time: 2 – 2 minutes
La setmana passada vaig fer un petit shell script per fer backup dels repositoris de software del meu servidor. Bàsicament el que fa és mirar a /var/svn/repos quins directoris hi ha. Llavors llença un svnadmin dump i al mateix temps comprimeix amb bzip2 la sortida cap a un fitxer, després aquest fitxer es guarda a /home/backup/subversion que és una unitat de xarxa montada per fer backups en el servidor. L’últim detall que em fa falta comentar és que després de fer la còpia del fitxer, deixa 3 fitxers de cada repositori al directori de backup i la resta els borra. D’aquesta forma tinc 3 còpies de cada un dels repositoris, una d’ahir, l’altre d’abans d’ahir i finalment una de fa 3 dies. Així si passa algún desastre d’incosistència o algo semblant tinc més marge per recuperar el repositori.
Veureu que el codi és molt simple i si algú el vol adaptar no crec que li costi gaire, tot esta programat amb ordres típiques, sense comandes rares ni res. Finalment l’únic que he hagut de fer és posar-lo al cron a alguna hora de matinada.
#!/bin/sh BASE="/var/svn/repos" DATA=`date "+%Y%m%d"` cd $BASE REPOSS=`find . -maxdepth 1 -mindepth 1 -type d | cut -f 2 -d "/"` BACKUPDIR="/home/backup/subversion" for REPOS in $REPOSS do BACKUPFITXER=backup-repos-$REPOS FITXER=$BACKUPFITXER-$DATA.dump.bz2 echo -n "Starting $REPOS backup..." svnadmin dump -q $BASE/$REPOS | bzip2 > $FITXER 2>/dev/null mv $FITXER $BACKUPDIR cd $BACKUPDIR rm -f `ls -t $BACKUPFITXER* | sed -e 1,3d` 2> /dev/null echo "OK" cd $BASE done