rdiff-backup - Alat za daljinsko inkrementalno sigurnosno kopiranje za Linux


rdiff-backup je moćna i laka za korištenje Python skripta za lokalno/daljinsko inkrementalno sigurnosno kopiranje, koja radi na bilo kojem POSIX operativnom sistemu kao što je Linux, Mac OS X ili Cygwin. Objedinjuje izvanredne karakteristike ogledala i inkrementalne rezervne kopije.

Značajno je da čuva poddirektorije, dev datoteke, čvrste veze i kritične atribute datoteka kao što su dozvole, vlasništvo uid/gid-a, vremena modifikacije, prošireni atributi, acl-ovi i vilice resursa. Može da radi u režimu koji je efikasan u propusnom opsegu preko cevi, na sličan način kao i popularni rsync alat za pravljenje rezervnih kopija.

rdiff-backup pravi sigurnosnu kopiju jednog direktorija u drugom preko mreže koristeći SSH, što implicira da je prijenos podataka šifriran i tako siguran. Ciljni direktorij (na udaljenom sistemu) završava točnu kopiju izvornog direktorija, međutim dodatni obrnuti diffovi su pohranjeni u posebnom poddirektoriju u ciljnom direktoriju, što omogućava vraćanje datoteka izgubljenih prije nekog vremena.

Zavisnosti

Da biste koristili rdiff-backup u Linuxu, trebat će vam sljedeći paketi instalirani na vašem sistemu:

  • Python v2.2 ili noviji
  • librsync v0.9.7 ili noviji
  • pylibacl i pyxattr Python moduli su opcioni, ali neophodni za POSIX listu kontrole pristupa (ACL) i podršku proširenih atributa.
  • rdiff-backup-statistics zahtijeva Python v2.4 ili noviji.

Kako instalirati rdiff-backup u Linux

Važno: Ako radite preko mreže, morat ćete instalirati rdiff-backup oba sistema, po mogućnosti obje instalacije rdiff-backup-a moraju biti tačne ista verzija.

Skripta je već prisutna u zvaničnim repozitorijumima mainstream Linux distribucija, jednostavno pokrenite naredbu ispod da instalirate rdiff-backup kao i njegove zavisnosti:

Intall rdiff-backup na Ubuntu

Da instalirate Rdiff-Backup na Ubuntu Focal ili Debian Bullseye ili noviji (ima 2.0).


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

Da instalirate Rdiff-Backup na Ubuntu backports za starije verzije (potreban je backported 2.0).


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

Na CentOS/RHEL 8

Da instalirate Rdiff-Backup na CentOS i RHEL 8 (od COPR).


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

Na CentOS/RHEL 7

Da instalirate Rdiff-Backup na CentOS i RHEL 7 (od COPR).


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

Na 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

Na Fedori

Da instalirate Rdiff-Backup na Fedora 32+.


sudo dnf install rdiff-backup

Kako koristiti rdiff-backup u Linuxu

Kao što sam već pomenuo, rdiff-backup koristi SSH za povezivanje sa udaljenim mašinama na vašoj mreži, a podrazumevana autentifikacija u SSH-u je metoda korisničkog imena/lozinke, koja obično zahteva ljudsku interakciju.

Međutim, da biste automatizirali zadatke kao što su automatsko pravljenje sigurnosnih kopija sa skriptama i dalje, morat ćete konfigurirati SSH prijavu bez lozinke koristeći SSH ključeve, jer SSH ključevi povećavaju povjerenje između dva Linux servera za jednostavnu sinhronizaciju ili prijenos datoteka.

Nakon što postavite SSH prijavu bez lozinke, možete početi koristiti skriptu sa sljedećim primjerima.

Sigurnosna kopija datoteka na različite particije

Primjer ispod će sigurnosno kopirati /etc direktorij u Backup direktorij na drugoj particiji:

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

Da biste isključili određeni direktorij kao i njegove poddirektorije, možete koristiti opciju --exclude na sljedeći način:

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

Možemo uključiti sve datoteke uređaja, fifo datoteke, datoteke socketa i simboličke veze sa opcijom --include-special-files kao u nastavku:

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

Postoje još dvije važne zastavice koje možemo postaviti za odabir datoteke; --max-file-size veličina koja isključuje datoteke koje su veće od date veličine u bajtovima i --min-file-size veličinu koja isključuje datoteke koje su manje od data veličina u bajtovima:

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

Napravite sigurnosnu kopiju udaljenih datoteka na lokalnom Linux serveru

Za potrebe ovog odjeljka koristit ćemo:

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

Kao što smo ranije rekli, morate instalirati istu verziju rdiff-backup na oba stroja, sada pokušajte provjeriti verziju na oba stroja na sljedeći način:

rdiff-backup -V

Na backup serveru kreirajte direktorij koji će pohraniti datoteke sigurnosne kopije na sljedeći način:

mkdir -p /backups

Sada sa backup servera pokrenite sljedeće naredbe da napravite sigurnosnu kopiju direktorija /var/log/ i /root sa udaljenog Linux servera 192.168.56.102 u /backups:

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

Snimak ekrana ispod prikazuje root datoteku na udaljenom serveru 192.168.56.102 i sigurnosne kopije datoteka na stražnjem serveru 192.168.56.10:

Obratite pažnju na rdiff-backup-data direktorij kreiran u direktoriju backup kao što se vidi na snimku ekrana, on sadrži vitalne podatke koji se odnose na proces izrade sigurnosne kopije i inkrementalne datoteke.

Sada, na serveru 192.168.56.102, dodatne datoteke su dodane u korijenski direktorij kao što je prikazano ispod:

Pokrenimo naredbu sigurnosne kopije još jednom da dobijemo izmijenjene podatke, možemo koristiti -v[0-9] (gdje broj specificira nivo opširnosti, zadano je 3 što je tiho) opciju za postavite funkciju opširnosti:

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

A da navedemo broj i datum djelomičnih inkrementalnih sigurnosnih kopija sadržanih u direktoriju /backups/192.168.56.102_rootfiles.backup, možemo pokrenuti:

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

Automatizacija rdiff-back backup-a korištenjem Cron

Možemo ispisati sažetak statistike nakon uspješne sigurnosne kopije pomoću --print-statistics. Međutim, ako ne postavimo ovu opciju, informacije će i dalje biti dostupne iz datoteke statistike sesije. Pročitajte više o ovoj opciji u odeljku STATISTIKA na stranici man.

A oznaka –remote-schema nam omogućava da navedemo alternativni metod povezivanja na udaljeni računar.

Sada, krenimo kreiranjem backup.sh skripte na backup serveru 192.168.56.10 kako slijedi:

cd ~/bin
vi backup.sh

Dodajte sljedeće redove u datoteku skripte.

#!/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

Sačuvajte datoteku i izađite, a zatim pokrenite sljedeću naredbu da dodate skriptu u crontab na backup serveru 192.168.56.10:

crontab -e

Dodajte ovu liniju za pokretanje vaše skripte za sigurnosnu kopiju svakog dana u ponoć:

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

Sačuvajte crontab i zatvorite ga, sada smo uspješno automatizirali proces sigurnosne kopije. Uvjerite se da radi kako se očekuje.

Pročitajte rdiff-backup man stranicu za dodatne informacije, iscrpne opcije upotrebe i primjere:

man rdiff-backup

rdiff-backup Početna stranica: http://www.nongnu.org/rdiff-backup/

To je to za sada! U ovom vodiču smo vam pokazali kako instalirati i u osnovi koristiti rdiff-backup, Python skriptu laku za korištenje za lokalno/daljinsko inkrementalno sigurnosno kopiranje u Linuxu. Podijelite svoje mišljenje s nama putem odjeljka za povratne informacije u nastavku.