rdiff-backup: una eina de còpia de seguretat incremental remota per a Linux


rdiff-backup és un script Python potent i fàcil d'utilitzar per a còpies de seguretat incrementals locals/remotes, que funciona amb qualsevol sistema operatiu POSIX com Linux, Mac OS X o Cygwin. Reuneix les característiques notables d'un mirall i una còpia de seguretat incremental.

De manera significativa, conserva subdirectoris, fitxers de desenvolupament, enllaços durs i atributs de fitxers crítics com ara permisos, propietat d'uid/gid, temps de modificació, atributs ampliats, acls i bifurcacions de recursos. Pot funcionar en un mode eficient d'amplada de banda a través d'una canonada, de manera similar a la popular eina de còpia de seguretat rsync.

rdiff-backup fa una còpia de seguretat d'un sol directori a un altre a través d'una xarxa mitjançant SSH, la qual cosa implica que la transferència de dades està xifrada de manera segura. El directori de destinació (al sistema remot) acaba com una còpia exacta del directori d'origen, però les diferències inverses addicionals s'emmagatzemen en un subdirectori especial al directori de destinació, cosa que permet recuperar fitxers perduts fa un temps.

Per utilitzar rdiff-backup a Linux, necessitareu els paquets següents instal·lats al vostre sistema:

  • Python v2.2 o posterior
  • librsync v0.9.7 o posterior
  • Els mòduls pylibacl i pyxattr Python són opcionals però necessaris per a la llista de control d'accés POSIX (ACL) i el suport d'atributs estès respectivament.
  • rdiff-backup-statistics requereix Python v2.4 o posterior.

Com instal·lar rdiff-backup a Linux

Important: si esteu operant a través d'una xarxa, haureu d'instal·lar rdiff-backup ambdós sistemes, preferiblement les dues instal·lacions de rdiff-backup hauran de ser exactament la mateixa versió.

L'script ja està present als dipòsits oficials de les distribucions principals de Linux, només cal que executeu l'ordre següent per instal·lar rdiff-backup així com les seves dependències:

Per instal·lar Rdiff-Backup a Ubuntu Focal o Debian Bullseye o més recent (té 2.0).

$ sudo apt-get update
$ sudo apt-get install librsync-dev rdiff-backup

Per instal·lar Rdiff-Backup als backports d'Ubuntu per a versions anteriors (necessita un backported 2.0).

$ sudo add-apt-repository ppa:rdiff-backup/rdiff-backup-backports
$ sudo apt update
$ sudo apt install rdiff-backu

Per instal·lar Rdiff-Backup a CentOS i RHEL 8 (de COPR).

$ sudo yum install yum-plugin-copr epel-release
$ sudo yum copr enable frankcrawford/rdiff-backup
$ sudo yum install rdiff-backup

Per instal·lar Rdiff-Backup a CentOS i RHEL 7 (de COPR).

$ sudo yum install yum-plugin-copr epel-release
$ sudo yum copr enable frankcrawford/rdiff-backup
$ sudo yum install rdiff-backup
$ sudo yum install centos-release-scl
$ sudo yum install rh-python36 gcc libacl-devel
$ scl enable rh-python36 bash
$ sudo pip install rdiff-backup pyxattr pylibacl
$ echo 'exec scl enable rh-python36 -- rdiff-backup "[email "' | sudo tee /usr/bin/rdiff-backup
$ sudo chmod +x /usr/bin/rdiff-backup

Per instal·lar Rdiff-Backup a Fedora 32+.

$ sudo dnf install rdiff-backup

Com utilitzar rdiff-backup a Linux

Com he esmentat abans, rdiff-backup utilitza SSH per connectar-se a màquines remotes de la vostra xarxa, i l'autenticació predeterminada a SSH és el mètode de nom d'usuari/contrasenya, que normalment requereix interacció humana.

Tanmateix, per automatitzar tasques com ara les còpies de seguretat automàtiques amb scripts i més enllà, haureu de configurar una sincronització o transferència de fitxers fàcil.

Un cop hàgiu configurat l'inici de sessió SSH sense contrasenya, podeu començar a utilitzar l'script amb els exemples següents.

L'exemple següent farà una còpia de seguretat del directori /etc en un directori de còpia de seguretat d'una altra partició:

$ sudo rdiff-backup /etc /media/aaronkilik/Data/Backup/mint_etc.backup

Per excloure un directori concret així com els seus subdirectoris, podeu utilitzar l'opció --exclude de la següent manera:

$ sudo rdiff-backup --exclude /etc/cockpit --exclude /etc/bluetooth /media/aaronkilik/Data/Backup/mint_etc.backup

Podem incloure tots els fitxers del dispositiu, fitxers fifo, fitxers de socket i enllaços simbòlics amb l'opció --include-special-files com a continuació:

$ sudo rdiff-backup --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Hi ha altres dos indicadors importants que podem establir per a la selecció de fitxers; --max-file-size mida que exclou els fitxers que són més grans que la mida indicada en bytes i la mida --min-file-size que exclou els fitxers que són més petits que la mida donada en bytes:

$ sudo rdiff-backup --max-file-size 5M --include-special-files --exclude /etc/cockpit /media/aaronkilik/Data/Backup/mint_etc.backup

Als efectes d'aquesta secció, farem servir:

Remote Server (tecmint)	        : 192.168.56.102 
Local Backup Server (backup) 	: 192.168.56.10

Com hem dit abans, heu d'instal·lar la mateixa versió de rdiff-backup a ambdues màquines, ara proveu de comprovar la versió a ambdues màquines de la següent manera:

$ rdiff-backup -V

Al servidor de còpia de seguretat, creeu un directori que emmagatzemarà els fitxers de còpia de seguretat de la següent manera:

# mkdir -p /backups

Ara des del servidor de còpia de seguretat, executeu les ordres següents per fer una còpia de seguretat dels directoris /var/log/ i /root des del servidor Linux remot 192.168.56.102 a / còpies de seguretat:

# rdiff-backup [email ::/var/log/ /backups/192.168.56.102_logs.backup
# rdiff-backup [email ::/root/ /backups/192.168.56.102_rootfiles.backup

La captura de pantalla següent mostra el fitxer arrel al servidor remot 192.168.56.102 i els fitxers de còpia de seguretat al servidor posterior 192.168.56.10:

Preneu nota del directori rdiff-backup-data creat al directori backup tal com es veu a la captura de pantalla, conté dades vitals sobre el procés de còpia de seguretat i fitxers incrementals.

Ara, al servidor 192.168.56.102, s'han afegit fitxers addicionals al directori arrel tal com es mostra a continuació:

Executem l'ordre de còpia de seguretat una vegada més per obtenir les dades modificades, podem utilitzar l'opció -v[0-9] (on el número especifica el nivell de verbositat, per defecte és 3 que és silenciós) per establiu la característica de verbositat:

# rdiff-backup -v4 [email ::/root/ /backups/192.168.56.102_rootfiles.backup 

I per enumerar el nombre i la data de les còpies de seguretat parcials incrementals contingudes al directori /backups/192.168.56.102_rootfiles.backup, podem executar:

# rdiff-backup -l /backups/192.168.56.102_rootfiles.backup/

Podem imprimir estadístiques de resum després d'una còpia de seguretat correcta amb el --print-statistics. Tanmateix, si no configurem aquesta opció, la informació encara estarà disponible des del fitxer d'estadístiques de sessió. Més informació sobre aquesta opció a la secció ESTADÍSTIQUES de la pàgina de manual.

I el senyalador –remote-schema ens permet especificar un mètode alternatiu de connexió a un ordinador remot.

Ara, comencem per crear un script backup.sh al servidor de còpia de seguretat 192.168.56.10 de la següent manera:

# cd ~/bin
# vi backup.sh

Afegiu les línies següents al fitxer d'script.

#!/bin/bash

#This is a rdiff-backup utility backup script

#Backup command
rdiff-backup --print-statistics --remote-schema 'ssh -C %s "sudo /usr/bin/rdiff-backup --server --restrict-read-only  /"'  [email ::/var/logs  /backups/192.168.56.102_logs.back

#Checking rdiff-backup command success/error
status=$?
if [ $status != 0 ]; then
        #append error message in ~/backup.log file
        echo "rdiff-backup exit Code: $status - Command Unsuccessful" >>~/backup.log;
        exit 1;
fi

#Remove incremental backup files older than one month
rdiff-backup --force --remove-older-than 1M /backups/192.168.56.102_logs.back

Deseu el fitxer i sortiu i, a continuació, executeu l'ordre següent per afegir l'script al crontab del servidor de còpia de seguretat 192.168.56.10:

# crontab -e

Afegiu aquesta línia per executar el vostre script de còpia de seguretat diàriament a mitjanit:

0   0  *  *  * /root/bin/backup.sh > /dev/null 2>&1

Deseu el crontab i tanqueu-lo, ara hem automatitzat correctament el procés de còpia de seguretat. Assegureu-vos que funciona com s'esperava.

Llegiu la pàgina de manual de rdiff-backup per obtenir informació addicional, opcions d'ús exhaustives i exemples:

# man rdiff-backup

Pàgina d'inici de rdiff-backup: http://www.nongnu.org/rdiff-backup/

Això és tot de moment! En aquest tutorial, us vam mostrar com instal·lar i utilitzar bàsicament rdiff-backup, un script Python fàcil d'utilitzar per a una còpia de seguretat incremental local/remota a Linux. Comparteix els teus pensaments amb nosaltres a través de la secció de comentaris a continuació.