Nov 22

duplicity: còpies de seguretat senzilles i potents des de la CLI

Reading time: 3 – 4 minutes

Duplicity és un aplicatiu basat en python que de moment no disposa de frontend gràfic, sinó com les coses bones de la vida s’usa des de CLI. Esta orientat a les còpies de seguretat i la seva principal potència resideix en recolzar-se amb rdiffdir/rdiff/rsync per fer còpies de seguretat diferencies/incrementals. Això sembla que no sigui cap tret diferencial si no fos perquè suporta una bona colla de sistemes on enmagatzemar les còpies:

  • ssh/scp
  • local file access
  • rsync
  • ftp
  • HSI
  • WebDAV
  • Amazon S3

De moment ja he pogut comprovar que tan via Amazon S3 com via FTP, funciona la mar de bé. Això com podeu verure ja té més història, ja que fer un sistema de còpies diferencies i/o incrementals contra un FTP o contra S3, no és trivial. A més esta fet seguint tots els estàndards, és eficient en la gestió d’ampada de banda i suporta xifrat per clau pública i clau privada.

A continuació adjunto un petit cookbook dels paràmetres que jo més uso:

    • Fer un backup contra un FTP de tot el sistema, el backup es farà incremental sempre que la còpia incremental més vella no tingui més de 7 dies llavors es farà una còpia ‘full’. S’indica que els fitxers que es pujaran a l’FTP tenen una mida de 10Mb. No es copiaran els directoris /dev, /proc, /tmp, /mnt, /media
PASSPHRASE=clausimetrica duplicity incremental --full-if-older-than 7D -v4 --volsize 10 --exclude=/dev --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/media / ftp://user:pass@hostname
    • Veure un llistat dels fitxers sobre els que hem fet còpia:
PASSPHRASE=clausimetrica duplicity list-current-files ftp://user:pass@hostname
    • Consultar quines còpies hi ha disponibles al repositori:
PASSPHRASE=clausimetrica duplicity collection-status  ftp://user:pass@hostname

Per restaurar les còpies de seguretat, cal pensar que sovint el que es vol és recuperar algún fitxer o directori i no pas tota la còpia. Així doncs aquí es tindran en compte aquests detalls.

    • Recuperem tota la còpia de seguretat sencera:
PASSPHRASE=clausimetrica duplicity ftp://user:pass@hostname /tmp/restore
    • Recuperem un fitxer o directori:
PASSPHRASE=clausimetrica duplicity --file-to-restore nom_fitxer_o_directori_a_recuperar ftp://user:pass@hostname /tmp/restore
    • Recuperem un fitxer o directori concrets de fa 3 dies enrera:
PASSPHRASE=clausimetrica duplicity -t 3D --file-to-restore nom_fitxer_o_directori_a_recuperar ftp://user:pass@hostname /tmp/restore

Com podeu comprovar l’ús de l’eina és ben senzill i fàcil de col·locar dins d’un crontab, però realment si ús calen combinacions més complexes cal que doneu un bon cop d’ull al man duplicity.

UPDATE (2015/08/17) How to install duplicity on Ubuntu 12.04

apt-get install -y python-paramiko python-gobject-2 python-dev build-essential python-pip python-software-properties
add-apt-repository ppa:duplicity-team
apt-get update
apt-get install -y duplicity

UPDATE (2016/08/02) Backup full Ubuntu Linux

PASSPHRASE=your_password duplicity incremental --full-if-older-than 7D -v4 --volsize 10 --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} / rsync://the_user:the_password@host_server::/path/
Jul 24

Backup configuració servidor RADIUS de Windows (2k i 2k3)

Reading time: 1 – 2 minutes

Avui he estat molta estona treballant amb el IAS de Windows, o com li diu la resta del món amb el servidor Radius de Windows. Doncs la gran deliveració de l’Albert ha estat: això quan peti si no ho tinc documentat les passarem negres per tornar-ho a configurar tot. Doncs per això sempre hi ha ens backups i com sempre acostuma a passar per les coses interessants s’ha de fer des de línia de comandes, així doncs aquí teniu la gràcia de tot:

# Fer còpia de seguretat del IAS (backup)
netsh aaaa show config c:\IAS.txt

# Restaurar còpia de seguretat del IAS (restore) netsh exec c:\IAS.txt

Això ho he trobat en el document: Windows 2000: Internet Authentication Service (IAS) and RADIUS on a més hi trobareu molta i molt bona informació conceptual de com funciona el IAS.

Jun 03

Shell Script: backup dels repositoris de subversion

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