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.