IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

rdiff-backup és un script escrit en Python que permet fer una copia de seguretat de un directori.

TODO:

The target directory ends up a copy (mirror) of the source directory, but extra reverse diffs are stored in a special subdirectory of that target directory, so you can still recover files lost some time ago. The idea is to combine the best features of a mirror and an incremental backup. rdiff-backup also preserves symlinks, special files, hardlinks, permissions, uid/gid ownership, and modifica‐

      tion times.
      rdiff-backup  can also operate in a bandwidth efficient manner over a pipe, like rsync(1).  Thus you can use ssh and rdiff-backup to securely back a hard drive up to
      a remote location, and only the differences will be transmitted.  Using the default settings, rdiff-backup requires that the remote system  accept  ssh  connections,
      and that rdiff-backup is installed in the user's PATH on the remote system.  For information on other options, see the section on REMOTE OPERATION.
      Note  that  you  should not write to the mirror directory except with rdiff-backup.  Many of the increments are stored as reverse diffs, so if you delete or modify a
      file, you may lose the ability to restore previous versions of that file.
      Finally, this man page is intended more as a precise description of the behavior and syntax of rdiff-backup.  New users may want to check out the examples.html  file
      included in the rdiff-backup distribution.


Instal.lació

Evidentment és pot instal·lar amb apt-get. El problema és que cada distribució Linux té una versió diferent i això pot ser un problema al fer les copies de seguretat entre dos màquines amb diferents versions.

Instal·lació a Debian/Ubuntu

$ sudo apt-get install rdiff-backup

La versió instal·lada a una Ubuntu Server 10.10 Maverick

$ dpkg -l | grep backup
ii  rdiff-backup                    1.2.8-5ubuntu2                    remote incremental backup

Fitxers instal·lats

$ dpkg -L rdiff-backup
/.
/usr
/usr/lib
/usr/lib/pyshared
/usr/lib/pyshared/python2.6
/usr/lib/pyshared/python2.6/rdiff_backup
/usr/lib/pyshared/python2.6/rdiff_backup/C.so
/usr/lib/pyshared/python2.6/rdiff_backup/_librsync.so
/usr/bin
/usr/bin/rdiff-backup
/usr/bin/rdiff-backup-statistics
 /usr/share
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/rdiff-backup.1.gz
/usr/share/man/man1/rdiff-backup-statistics.1.gz
/usr/share/doc
/usr/share/doc/rdiff-backup
/usr/share/doc/rdiff-backup/FAQ.html
/usr/share/doc/rdiff-backup/README
/usr/share/doc/rdiff-backup/examples.html
/usr/share/doc/rdiff-backup/README.Debian
/usr/share/doc/rdiff-backup/copyright
/usr/share/doc/rdiff-backup/changelog.gz
/usr/share/doc/rdiff-backup/changelog.Debian.gz
/usr/share/pyshared
/usr/share/pyshared/rdiff_backup
/usr/share/pyshared/rdiff_backup/Hardlink.py
/usr/share/pyshared/rdiff_backup/lazy.py
/usr/share/pyshared/rdiff_backup/manage.py
/usr/share/pyshared/rdiff_backup/hash.py
/usr/share/pyshared/rdiff_backup/FilenameMapping.py
/usr/share/pyshared/rdiff_backup/fs_abilities.py
/usr/share/pyshared/rdiff_backup/rorpiter.py
/usr/share/pyshared/rdiff_backup/eas_acls.py
/usr/share/pyshared/rdiff_backup/win_acls.py
/usr/share/pyshared/rdiff_backup/robust.py
/usr/share/pyshared/rdiff_backup/TempFile.py
/usr/share/pyshared/rdiff_backup/metadata.py
/usr/share/pyshared/rdiff_backup/user_group.py
/usr/share/pyshared/rdiff_backup/librsync.py
/usr/share/pyshared/rdiff_backup/longname.py
/usr/share/pyshared/rdiff_backup/Rdiff.py
/usr/share/pyshared/rdiff_backup/iterfile.py
/usr/share/pyshared/rdiff_backup/selection.py
/usr/share/pyshared/rdiff_backup/connection.py
/usr/share/pyshared/rdiff_backup/SetConnections.py
/usr/share/pyshared/rdiff_backup/Main.py
/usr/share/pyshared/rdiff_backup/regress.py
/usr/share/pyshared/rdiff_backup/backup.py
/usr/share/pyshared/rdiff_backup/Time.py
/usr/share/pyshared/rdiff_backup/restore.py
/usr/share/pyshared/rdiff_backup/increment.py
/usr/share/pyshared/rdiff_backup/static.py
/usr/share/pyshared/rdiff_backup/rpath.py
/usr/share/pyshared/rdiff_backup/Security.py
/usr/share/pyshared/rdiff_backup/Globals.py
/usr/share/pyshared/rdiff_backup/compare.py
/usr/share/pyshared/rdiff_backup/statistics.py
/usr/share/pyshared/rdiff_backup/log.py
/usr/share/pyshared/rdiff_backup-1.2.8.egg-info
/usr/share/python-support
/usr/share/python-support/rdiff-backup.public
/etc
/etc/bash_completion.d
/etc/bash_completion.d/rdiff-backup


Instal·lació a Skolelinux (etic)

En el cas d'SkoleLinux rdiff-backup ja esta instal·lat i de fet és una dependència dels paquets slbackup i webmin-slbackup.

Els passos per instal·lar rdiff-backup a mà són (poso com exemples els passos seguits per instal·lar rdiff-backup a l'etic):

1) Descarregar la versió que desitgem de la web de rdiff-backup. Anem a la web i amb firefox copiem l'adreça del fitxer que ens volem descarregar. Executem:

 $cd
 $mkdir rdiff-backup
 $cd rdiff-backup
 $wget http://savannah.nongnu.org/download/rdiff-backup/rdiff-backup-1.1.5.tar.gz
 --12:45:10--  http://savannah.nongnu.org/download/rdiff-backup/rdiff-backup-1.1.5.tar.gz
            => `rdiff-backup-1.1.5.tar.gz'
 Resolving savannah.nongnu.org... 199.232.41.4
 Connecting to savannah.nongnu.org[199.232.41.4]:80... connected.
 HTTP request sent, awaiting response... 302 Found
 Location: http://download.savannah.gnu.org/releases/rdiff-backup/rdiff-backup-1.1.5.tar.gz [following]
 --12:45:11--  http://download.savannah.gnu.org/releases/rdiff-backup/rdiff-backup-1.1.5.tar.gz
          => `rdiff-backup-1.1.5.tar.gz'
 Resolving download.savannah.gnu.org... 199.232.41.75
 Connecting to download.savannah.gnu.org[199.232.41.75]:80... connected.
 HTTP request sent, awaiting response... 200 OK
 Length: 170,477 [application/x-tar]
 
 100%[=================================================================================================================>] 170,477       36.73K/s    ETA       00:00
 
 12:45:16 (36.66 KB/s) - `rdiff-backup-1.1.5.tar.gz' saved [170477/170477]
 $ tar xvzf rdiff-backup-1.1.5.tar.gz
 tar xvzf rdiff-backup-1.1.5.tar.gz
 rdiff-backup-1.1.5/
 rdiff-backup-1.1.5/rdiff-backup-statistics
 rdiff-backup-1.1.5/examples.html
 ......
 $ cd rdiff-backup-1.1.5
 $ sudo cat README

al fitxer README ens explica que per instal·lar executem:

 $python setup.py install

Si tenim totes les dependències s'instalara correctament. Sino segurament ens caldra instal·lar els fitxers de desenvolupament de python i librsync. A debian:

 $sudo apt-get install python2.4-dev librsync-dev

Ja esta instal·lat. La carpeta que em descomprimit es pot esborrar.

Conèixer la versió

$ rdiff-backup -V
rdiff-backup 1.2.8


Exemples d'ús de rdiff-backup

Realitzar còpies de seguretat

 $ sudo rdiff-backup --print-statistics --no-compression sergi.tur@10.0.2.2::/skole/tjener/home0/sergi.tur carpeta_on_allotjar_la_copia

Més exemples a http://www.nongnu.org/rdiff-backup/examples.html

Un exemple extret de ninjabackup

$ /usr/bin/rdiff-backup  --print-statistics --exclude '/home/*/.gnupg' --exclude '/home/*/.local/share/Trash' --exclude '/home/*/.Trash' --exclude '/home/*/.thumbnails' 
--exclude '/home/*/.beagle' --exclude '/home/*/.aMule' --exclude '/home/*/gtk-gnutella-downloads' --include '/var/spool/cron/crontabs' --include '/var/backups' --include 
'/etc' --include '/root' --include '/home' --include '/usr/local/*bin' --include '/var/lib/dpkg/status*' --include '/samba' --include '/opt' --exclude '/*' / 
caro@192.168.0.254::/backup1/caro/backup_caro/
Debug: --------------[ Session statistics ]-------------- StartTime 1291490258.00 (Sat Dec 4 20:17:38 2010) EndTime 1291490411.49 (Sat Dec 4 20:20:11 2010) ElapsedTime 153.49 
(2 minutes 33.49 seconds) SourceFiles 201588 SourceFileSize 61240891073 (57.0 GB) MirrorFiles 201575 MirrorFileSize 61237730812 (57.0 GB) NewFiles 14 NewFileSize 3156800 
(3.01  MB) DeletedFiles 1 DeletedFileSize 1590 (1.55 KB) ChangedFiles 14 ChangedSourceSize 2239509 (2.14 MB) ChangedMirrorSize 2234458 (2.13 MB) IncrementFiles 30 
IncrementFileSize 11169 (10.9 KB) TotalDestinationSizeChange 3171430 (3.02 MB) Errors 0 --------------------------------------------------

Fixeu-vos en la connexió a la màquina remota:

caro@192.168.0.254::/backup1/caro/backup_caro/

Semblant a la sintaxi de SSH (però amb una separació entre màquina i path de dos vegades dos punts). caro és l'usuari remot, 192.168.0.254 és la IP de la màquina remota i /backup1/caro/backup_caro/ és la carpeta on és fa la còpia remota.

Al final es mostren unes estadístiques gràcies al paràmetre --print-statistics.

Recuperar una copia antiga

La copia s'havia fet amb:

$ rdiff-backup foo bar

Suposem que hem esborrat foo/dir i ara el volem restaurar a bar/dir. Recuperem la última copia:

$ cp -a bar/dir foo/dir

Ara suposem que les còpies són remotes:

$ rdiff-backup local-dir host.net::/remote-dir

Per recuperar un fitxer:

$ rdiff-backup --restore-as-of now host.net::/remote-dir/file local-dir/file

o

$ rdiff-backup -r now host.net::/remote-dir/file local-dir/file

L'opció --restore-as-of o -r indica que volem fer una operació de restauració (en comptes de l'acció per defecte que es fer una còpia de seguretat) i amb now indiquem que volem l'última còpia.

Obtenir una copia de fa 10 dies:

$ rdiff-backup -r 10D host.net::/remote-dir/file /tmp/file

Altres exemples de dates:

5m4s
2002-03-05 (March 5th, 2002)

Per a més informació vegeu:

TIME FORMATS

Al manual:

$ man rdiff-backup


TODO:

Finally, we can use rdiff-backup to restore directory from an increment file. Increment files are stored in host.net::/remote-dir/rdiff-backup-data/increments and hold the 
previous versions of changed files. If you specify one directly:
rdiff-backup host.net::/remote-dir/rdiff-backup-data/increments/file.2003-03-05T12:21:41-07:00.diff.gz local-dir/file
rdiff-backup will tell from the filename that it is an rdiff-backup increment file and thus enter restore mode. Above the restored version is written to local-dir/file.

Esborrar còpies antigues

$ date
ds des  4 20:18:23 CET 2010

$ /usr/bin/rdiff-backup  --force --remove-older-than 60D caro@192.168.0.254::/backup1/caro/backup_caro/
Debug: No increments older than Tue Oct 5 21:17:38 2010 found, exiting.
Info: Removing backups older than 60D days succeeded.

Exemple extret de ninjabackup

Interfícies web i aplicacions basades en rsync: slbackup i webmin-slbackup

La gent d'skolelinux han creat els paquests slbackup i webmin-slbackup que configuren rdiff-backup per a fer copies de seguretat amb un entorn gràfic que utilitza webmin o es pot configurar sense webmin amb fitxers de text (només instal·lant slbackup)

Ninjabackup

Consulteu Ninjabackup

Troubleshooting

Destination directory XXX exists, but does not look like a rdiff-backup directory. Running rdiff-backup like this could mess up what is currently in it

IMPORTANT: La carpeta no ha d'existir prèviament! serà creada per rdiff-backup

rdiff-backup expects to run the first time in a setup where the target directory doesn't even exist. Since it looks like you want to use a mount point (and thus the directory must exist), you can safely use the --force option.

Diferents versions de rdiff-backup entre servidor i client

rdiff-backup comprova que la versió instalada a el servidor de copia de seguretat i al client remot sigui la mateixa i si no ho és no deixa fer la copia de seguretat. El problema és que evidentment les versions de rdiff-backup són diferents a Ubuntu, a Debian depenent de si estable, unstable i a Skolelinux.

La millor opció és instal·lar rdiff-backup a mà. Vegeu la secció dedicada a la instal·lació.

OverflowError: long int too large to convert to int

rdiff-backup utilitza ssh per connectar-se a les màquines remotes. S'utilitzen claus públiques per automatitzar el procés (evitar l'ús de passwords). NOTA IMPORTANT: Mitjançant ssh s'executen comandes en remot i el resultat d'aquestes comandes (sortida estandard) es procesada per rdiff en diferents parts del programa... Em vaig trobar amb diferents errors al intentar utilitzar rdiff-backup en màquines on tenia un echo de benvinguda al fitxer .baschr... això era processat també per rdiff i donava problemes.

Els errors que ens podem trobar son:

OverflowError: long int too large to convert to int http://lists.gnu.org/archive/html/rdiff-backup-users/2003-08/msg00037.html Les versions de client i servidor no es corresponen etc...

ldap backup failed with new ldiff-style slapd config (no funciona la copia de seguretat amb el nou tipus de fitxers de configuració ldap)

Recursos

Vegeu també

Enllaços externs