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


rdiff-backup je moćna i jednostavna Python skripta za lokalno/daljinsko inkrementalno sigurnosno kopiranje, koja radi na bilo kojem POSIX operativnom sustavu kao što je Linux, Mac OS X ili Cygwin. Objedinjuje izvanredne značajke zrcala i inkrementalne sigurnosne kopije.

Značajno je da čuva poddirektorije, razvojne datoteke, tvrde veze i kritične atribute datoteka kao što su dopuštenja, uid/gid vlasništvo, vremena izmjene, prošireni atributi, acl-ovi i račvanja resursa. Može raditi u načinu rada s učinkovitom propusnošću preko cijevi, na sličan način kao popularni alat za sigurnosno kopiranje rsync.

rdiff-backup sigurnosno kopira jedan direktorij u drugi preko mreže koristeći SSH, što znači da je prijenos podataka kriptiran i stoga siguran. Ciljni direktorij (na udaljenom sustavu) završava kao točna kopija izvornog direktorija, međutim dodatne obrnute razlike pohranjuju se u poseban poddirektorij u ciljnom direktoriju, što omogućuje oporavak datoteka izgubljenih prije nekog vremena.

Ovisnosti

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

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

Kako instalirati rdiff-backup u Linuxu

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

Skripta je već prisutna u službenim repozitorijima glavnih distribucija Linuxa, jednostavno pokrenite naredbu u nastavku da biste instalirali rdiff-backup kao i njegove ovisnosti:

Instalirajte rdiff-backup na Ubuntu

Za instaliranje 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 biste instalirali Rdiff-Backup na Ubuntu backports za starije verzije (potreban 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-a).


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-a).


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 biste instalirali Rdiff-Backup na Fedora 32+.


sudo dnf install rdiff-backup

Kako koristiti rdiff-backup u Linuxu

Kao što sam već spomenuo, rdiff-backup koristi SSH za povezivanje s udaljenim strojevima na vašoj mreži, a zadana autentifikacija u SSH-u je metoda korisničkog imena/lozinke, koja obično zahtijeva ljudsku interakciju.

Međutim, za automatizaciju zadataka poput automatskog sigurnosnog kopiranja sa skriptama i šire, morat ćete konfigurirati SSH prijavu bez lozinke pomoću SSH ključeva, jer SSH ključevi povećavaju povjerenje između dva Linux poslužitelja za jednostavnu sinkronizaciju ili prijenos datoteka.

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

Sigurnosno kopirajte datoteke na drugu particiju

Primjer u nastavku napravit će sigurnosnu kopiju direktorija /etc u direktoriju Backup 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 utičnica i simboličke veze s 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; Veličina --max-file-size koja isključuje datoteke koje su veće od zadane veličine u bajtovima i veličina --min-file-size koja isključuje datoteke koje su manje od navedena veličina u bajtovima:

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

Izradite sigurnosnu kopiju udaljenih datoteka na lokalnom Linux poslužitelju

U svrhu ovog odjeljka koristit ćemo:

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

Kao što smo prije rekli, morate instalirati istu verziju rdiff-backupa na oba računala, sada pokušajte provjeriti verziju na oba računala na sljedeći način:

rdiff-backup -V

Na poslužitelju sigurnosne kopije stvorite direktorij koji će pohraniti datoteke sigurnosne kopije ovako:

mkdir -p /backups

Sada s rezervnog poslužitelja pokrenite sljedeće naredbe za izradu sigurnosne kopije direktorija /var/log/ i /root s udaljenog Linux poslužitelja 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 zaslona u nastavku prikazuje korijensku datoteku na udaljenom poslužitelju 192.168.56.102 i sigurnosno kopirane datoteke na stražnjem poslužitelju 192.168.56.10:

Obratite pažnju na direktorij rdiff-backup-data stvoren u direktoriju backup kao što se vidi na snimci zaslona, on sadrži vitalne podatke koji se tiču procesa sigurnosnog kopiranja i inkrementalnih datoteka.

Sada, na poslužitelju 192.168.56.102, dodatne datoteke su dodane u korijenski direktorij kao što je prikazano u nastavku:

Pokrenimo naredbu sigurnosne kopije još jednom da dobijemo promijenjene podatke, možemo upotrijebiti -v[0-9] (gdje broj specificira razinu govora, zadana je 3 koja je tiha) opciju za postavite značajku opširnosti:

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

A za popis broja i datuma djelomičnih inkrementalnih sigurnosnih kopija sadržanih u /backups/192.168.56.102_rootfiles.backup direktoriju, možemo pokrenuti:

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

Automatiziranje rdiff-back backupa pomoću Crona

Možemo ispisati sažetak statistike nakon uspješnog sigurnosnog kopiranja s --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 odjeljku STATISTIKA na stranici priručnika.

A oznaka –remote-schema omogućuje nam da odredimo alternativnu metodu povezivanja s udaljenim računalom.

Sada počnimo stvaranjem skripte backup.sh na poslužitelju za sigurnosno kopiranje 192.168.56.10 kako slijedi:

cd ~/bin
vi backup.sh

Dodajte sljedeće retke 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

Spremite datoteku i izađite, a zatim pokrenite sljedeću naredbu da biste dodali skriptu u crontab na rezervnom poslužitelju 192.168.56.10:

crontab -e

Dodajte ovaj redak za pokretanje sigurnosne skripte svaki dan u ponoć:

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

Spremite crontab i zatvorite ga, sada smo uspješno automatizirali proces sigurnosne kopije. Provjerite radi li prema očekivanjima.

Pročitajte man stranicu rdiff-backup za dodatne informacije, iscrpne mogućnosti korištenja i primjere:

man rdiff-backup

Početna stranica rdiff-backup: 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 jednostavnu za korištenje za lokalnu/daljinsku inkrementalnu sigurnosnu kopiju u Linuxu. Podijelite svoje misli s nama putem odjeljka za povratne informacije u nastavku.