rdiff-backup - Un instrument de backup incremental la distanță pentru Linux


rdiff-backup este un script Python puternic și ușor de utilizat pentru backup incremental local/la distanță, care funcționează pe orice sistem de operare POSIX, cum ar fi Linux, Mac OS X sau Cygwin. Reunește caracteristicile remarcabile ale unei oglinzi și ale unui backup incremental.

În mod semnificativ, păstrează subdirectoarele, fișierele de dezvoltare, legăturile hard și atributele de fișiere critice, cum ar fi permisiunile, proprietatea uid/gid, timpii de modificare, atributele extinse, acls și fork-urile de resurse. Poate funcționa într-un mod eficient din punct de vedere al lățimii de bandă pe o conductă, într-un mod similar cu popularul instrument de backup rsync.

rdiff-backup realizează o copie de rezervă a unui singur director într-un altul printr-o rețea folosind SSH, ceea ce implică faptul că transferul de date este criptat astfel sigur. Directorul țintă (pe sistemul de la distanță) ajunge o copie exactă a directorului sursă, cu toate acestea, diferențele inverse suplimentare sunt stocate într-un subdirector special din directorul țintă, făcând posibilă recuperarea fișierelor pierdute cu ceva timp în urmă.

Dependente

Pentru a utiliza rdiff-backup în Linux, veți avea nevoie de următoarele pachete instalate pe sistemul dvs.:

  • Python v2.2 sau o versiune ulterioară
  • librsync v0.9.7 sau o versiune ulterioară
  • Modulele pylibacl și pyxattr Python sunt opționale, dar necesare pentru lista de control al accesului POSIX (ACL) și, respectiv, suport extins pentru atribute.
  • rdiff-backup-statistics necesită Python v2.4 sau o versiune ulterioară.

Cum se instalează rdiff-backup în Linux

Important: dacă operați într-o rețea, va trebui să instalați rdiff-backup ambele sisteme, de preferință ambele instalări ale rdiff-backup vor trebui să fie exacte. aceeași versiune.

Scriptul este deja prezent în depozitele oficiale ale distribuțiilor Linux principale, pur și simplu rulați comanda de mai jos pentru a instala rdiff-backup, precum și dependențele sale:

Instalați rdiff-backup pe Ubuntu

Pentru a instala Rdiff-Backup pe Ubuntu Focal sau Debian Bullseye sau mai nou (are 2.0).


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

Pentru a instala Rdiff-Backup pe backport-urile Ubuntu pentru versiuni mai vechi (necesită un backport 2.0).


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

Pe CentOS/RHEL 8

Pentru a instala Rdiff-Backup pe CentOS și RHEL 8 (de la COPR).


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

Pe CentOS/RHEL 7

Pentru a instala Rdiff-Backup pe CentOS și RHEL 7 (de la COPR).


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

Pe CentOS/RHEL 6


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 "$@"' | sudo tee /usr/bin/rdiff-backup
sudo chmod +x /usr/bin/rdiff-backup

Pe Fedora

Pentru a instala Rdiff-Backup pe Fedora 32+.


sudo dnf install rdiff-backup

Cum se utilizează rdiff-backup în Linux

După cum am menționat mai devreme, rdiff-backup folosește SSH pentru a se conecta la mașinile de la distanță din rețeaua dvs., iar autentificarea implicită în SSH este metoda nume de utilizator/parolă, care în mod normal necesită interacțiune umană.

Cu toate acestea, pentru a automatiza sarcini precum backup-urile automate cu scripturi și nu numai, va trebui să configurați SSH Passwordless Login Folosind chei SSH, deoarece cheile SSH măresc încrederea între două servere Linux pentru sincronizarea sau transferul ușor de fișiere.

După ce ați configurat autentificarea SSH fără parolă, puteți începe să utilizați scriptul cu următoarele exemple.

Backup fișiere în diferite partiții

Exemplul de mai jos va face backup pentru directorul /etc într-un director Backup pe o altă partiție:

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

Pentru a exclude un anume director, precum și subdirectoarele acestuia, puteți utiliza opțiunea --exclude după cum urmează:

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

Putem include toate fișierele dispozitivului, fișierele fifo, fișierele socket și legăturile simbolice cu opțiunea --include-special-files, după cum urmează:

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

Există alte două steaguri importante pe care le putem seta pentru selectarea fișierelor; dimensiunea --max-file-size care exclude fișierele care sunt mai mari decât dimensiunea dată în octeți și dimensiunea --min-file-size care exclude fișierele care sunt mai mici decât dimensiunea dată în octeți:

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

Faceți backup fișierelor de la distanță pe serverul Linux local

În scopul acestei secțiuni, vom folosi:

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

După cum am menționat anterior, trebuie să instalați aceeași versiune de rdiff-backup pe ambele mașini, acum încercați să verificați versiunea pe ambele mașini după cum urmează:

rdiff-backup -V

Pe serverul de rezervă, creați un director care va stoca fișierele de rezervă astfel:

mkdir -p /backups

Acum, de pe serverul de rezervă, rulați următoarele comenzi pentru a face o copie de rezervă a directoarelor /var/log/ și /root de la serverul Linux la distanță 192.168.56.102 în /backups:

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

Captura de ecran de mai jos arată fișierul rădăcină de pe serverul la distanță 192.168.56.102 și fișierele pentru care s-a făcut backup de pe serverul din spate 192.168.56.10:

Luați notă de directorul rdiff-backup-data creat în directorul backup, așa cum se vede în captură de ecran, acesta conține date vitale privind procesul de backup și fișierele incrementale.

Acum, pe serverul 192.168.56.102, fișierele suplimentare au fost adăugate în directorul rădăcină, după cum se arată mai jos:

Să rulăm comanda de rezervă încă o dată pentru a obține datele modificate, putem folosi opțiunea -v[0-9] (unde numărul specifică nivelul de verbozitate, implicit este 3, care este silentios) pentru setați caracteristica de verbozitate:

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

Și pentru a enumera numărul și data backup-urilor incrementale parțiale conținute în directorul /backups/192.168.56.102_rootfiles.backup, putem rula:

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

Automatizarea backup-ului rdiff-back folosind Cron

Putem imprima statistici rezumate după o copie de rezervă cu succes cu --print-statistics. Cu toate acestea, dacă nu setăm această opțiune, informațiile vor fi în continuare disponibile din fișierul cu statistici de sesiune. Citiți mai multe despre această opțiune în secțiunea STATISTICĂ a paginii de manual.

Și indicatorul –remote-schema ne permite să specificăm o metodă alternativă de conectare la un computer la distanță.

Acum, să începem prin a crea un script backup.sh pe serverul de rezervă 192.168.56.10, după cum urmează:

cd ~/bin
vi backup.sh

Adăugați următoarele linii în fișierul 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

Salvați fișierul și ieșiți, apoi executați următoarea comandă pentru a adăuga scriptul la crontab de pe serverul de rezervă 192.168.56.10:

crontab -e

Adăugați această linie pentru a rula scriptul de rezervă zilnic la miezul nopții:

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

Salvați crontab și închideți-l, acum am automatizat cu succes procesul de backup. Asigurați-vă că funcționează conform așteptărilor.

Citiți pagina de manual rdiff-backup pentru informații suplimentare, opțiuni de utilizare exhaustive și exemple:

man rdiff-backup

Pagina de pornire a rdiff-backup: http://www.nongnu.org/rdiff-backup/

Atât deocamdată! În acest tutorial, v-am arătat cum să instalați și să utilizați practic rdiff-backup, un script Python ușor de utilizat pentru backup incremental local/la distanță în Linux. Împărtășiți-vă gândurile cu noi prin secțiunea de feedback de mai jos.