rdiff-backup - Oddaljeno inkrementalno orodje za varnostno kopiranje za Linux


rdiff-backup je zmogljiv in enostaven za uporabo Python skript za lokalno/oddaljeno inkrementalno varnostno kopiranje, ki deluje v vseh operacijskih sistemih POSIX, kot so Linux, Mac OS X ali Cygwin. Združuje izjemne lastnosti ogledala in postopno varnostno kopijo.

Pomembno je, da ohranja podimenike, datoteke razvijalcev, trde povezave in kritične atribute datotek, kot so dovoljenja, lastništvo uid/gid, časi sprememb, razširjeni atributi, acls in vilice virov. Lahko deluje v pasovno širokopasovnem načinu preko cevi, na podoben način kot priljubljeno orodje za varnostno kopiranje rsync.

rdiff-backup varnostno kopira en sam imenik v drugem omrežju s pomočjo SSH, kar pomeni, da je prenos podatkov šifriran in tako varen. Ciljni imenik (v oddaljenem sistemu) ima natančno kopijo izvornega imenika, vendar so dodatne povratne razlike shranjene v posebnem podimeniku ciljnega imenika, kar omogoča obnovitev datotek, izgubljenih pred časom.

Če želite v sistemu Linux uporabljati rdiff-backup, boste v sistemu potrebovali naslednje pakete:

  • Python v2.2 ali novejši
  • librsync v0.9.7 ali novejši
  • pylibacl in pyxattr Python modula sta neobvezna, vendar potrebna za seznam za nadzor dostopa POSIX (ACL) in podporo za razširjene atribute.
  • rdiff-backup-statistics zahteva Python v2.4 ali novejšo različico.

Kako namestiti rdiff-backup v Linux

Pomembno: Če delate v omrežju, boste morali namestiti oba sistema rdiff-backup, po možnosti morata biti obe namestitvi rdiff-backup popolnoma enaki.

Skript je že prisoten v uradnih skladiščih glavnih distribucij Linuxa, preprosto zaženite spodnji ukaz, da namestite rdiff-backup in njegove odvisnosti:

Če želite namestiti Rdiff-Backup na Ubuntu Focal ali Debian Bullseye ali novejše (ima 2.0).

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

Če želite namestiti Rdiff-Backup na hrbtne plošče Ubuntu za starejše različice (potrebuje backported 2.0).

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

Za namestitev Rdiff-Backup na CentOS in RHEL 8 (od COPR).

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

Za namestitev Rdiff-Backup na CentOS in RHEL 7 (od 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

Namestitev Rdiff-Backup na Fedora 32+.

$ sudo dnf install rdiff-backup

Kako uporabljati rdiff-backup v Linuxu

Kot sem že omenil, rdiff-backup uporablja SSH za povezavo z oddaljenimi računalniki v vašem omrežju, privzeta overitev v SSH pa je uporabniško ime/geslo, ki običajno zahteva človeško interakcijo.

Če želite avtomatizirati naloge, kot so samodejne varnostne kopije s skripti in pozneje, boste morali konfigurirati enostavno sinhronizacijo ali prenos datotek.

Ko nastavite prijavo SSH Passwordless Login, lahko začnete uporabljati skript z naslednjimi primeri.

Spodnji primer bo varnostno kopiral imenik /etc v varnostnem imeniku na drugi particiji:

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

Če želite izključiti določen imenik in njegove podimenike, lahko uporabite možnost --exclude , kot sledi:

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

Vključimo lahko vse datoteke naprav, datoteke fifo, datoteke vtičnic in simbolične povezave z možnostjo --include-special-files , kot je prikazano spodaj:

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

Za izbiro datoteke lahko nastavimo še dve pomembni zastavici; --max-file-size velikost, ki izključuje datoteke, ki so večje od dane velikosti v bajtih, in --min-file-size velikost, ki izključuje datoteke, ki so manjše od podana velikost v bajtih:

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

Za namen tega razdelka bomo uporabili:

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

Kot smo že omenili, morate na obe računalniki namestiti isto različico rdiff-backup, zdaj poskusite preveriti različico na obeh računalnikih, kot sledi:

$ rdiff-backup -V

Na strežniku za varnostno kopiranje ustvarite imenik, v katerem bodo datoteke za varnostno kopiranje shranjene tako:

# mkdir -p /backups

Zdaj na varnostnem strežniku zaženite naslednje ukaze, da naredite varnostno kopijo imenikov /var/log/ in /root z oddaljenega Linux strežnika 192.168.56.102 v /varnostne kopije :

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

Spodnji posnetek zaslona prikazuje korensko datoteko na oddaljenem strežniku 192.168.56.102 in varnostno kopirane datoteke na zadnjem strežniku 192.168.56.10:

Upoštevajte imenik rdiff-backup-data, ustvarjen v imeniku backup , kot je razvidno iz posnetka zaslona, saj vsebuje ključne podatke o postopku varnostnega kopiranja in prirastnih datotekah.

Zdaj so na strežniku 192.168.56.102 v korenski imenik dodane dodatne datoteke, kot je prikazano spodaj:

Ponovno zaženimo ukaz za varnostno kopiranje, da dobimo spremenjene podatke, lahko uporabimo možnost -v [0-9] (kjer številka določa raven podrobnosti, privzeto je 3, ki je tiho), da nastavite podrobnost:

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

Če želimo navesti število in datum delnih inkrementalnih varnostnih kopij v imeniku /backups/192.168.56.102_rootfiles.backup, lahko zaženemo:

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

Po uspešnem varnostnem kopiranju lahko natisnemo povzetek statističnih podatkov z --print-statistics . Če pa te možnosti ne nastavimo, bodo informacije še vedno na voljo v datoteki s statističnimi podatki o sejah. Več o tej možnosti preberite v oddelku STATISTIKA na priročni strani.

Oznaka –remote-schema nam omogoča, da določimo alternativni način povezave z oddaljenim računalnikom.

Zdaj pa začnimo z ustvarjanjem skripta backup.sh na varnostnem strežniku 192.168.56.10, kot sledi:

# cd ~/bin
# vi backup.sh

V datoteko skripta dodajte naslednje vrstice.

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

Shranite datoteko in zapustite, nato zaženite naslednji ukaz, da dodate skript v crontab na varnostnem strežniku 192.168.56.10:

# crontab -e

Dodajte to vrstico, če želite nadomestni skript izvajati vsak dan ob polnoči:

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

Shranite crontab in ga zaprite, zdaj smo uspešno avtomatizirali postopek varnostnega kopiranja. Prepričajte se, da deluje po pričakovanjih.

Za dodatne informacije, izčrpne možnosti uporabe in primere preberite stran s pomočjo rdiff-backup.

# man rdiff-backup

Domača stran rdiff-backup: http://www.nongnu.org/rdiff-backup/

Za zdaj je to! V tej vadnici smo vam pokazali, kako namestiti in v bistvu uporabiti rdiff-backup, enostaven za uporabo skript Python za lokalno/oddaljeno inkrementalno varnostno kopiranje v Linuxu. Delite svoje misli z nami v spodnjem razdelku za povratne informacije.