rdiff-backup - Et eksternt inkrementelt sikkerhetskopieringsverktøy for Linux


rdiff-backup er et kraftig og brukervennlig Python-skript for lokal/ekstern inkrementell sikkerhetskopiering, som fungerer på alle POSIX-operativsystemer som Linux, Mac OS X eller Cygwin. Den samler de bemerkelsesverdige egenskapene til et speil og en inkrementell sikkerhetskopi.

Betydelig nok bevarer den underkataloger, dev-filer, harde lenker og kritiske filattributter som tillatelser, uid/gid-eierskap, endringstider, utvidede attributter, acls og ressursgafler. Det kan fungere i en båndbreddeeffektiv modus over et rør, på lignende måte som det populære rsync-sikkerhetskopieringsverktøyet.

rdiff-backup sikkerhetskopierer en enkelt katalog til en annen over et nettverk ved hjelp av SSH, noe som antyder at dataoverføringen er kryptert og dermed sikker. Målkatalogen (på det eksterne systemet) ender opp med en eksakt kopi av kildekatalogen, men ekstra omvendte diff er lagret i en spesiell underkatalog i målkatalogen, noe som gjør det mulig å gjenopprette filer tapt for en tid siden.

For å bruke rdiff-backup i Linux, trenger du følgende pakker installert på systemet ditt:

  • Python v2.2 eller nyere
  • librsync v0.9.7 eller nyere
  • pylibacl og pyxattr Python-moduler er valgfrie, men nødvendige for henholdsvis POSIX tilgangskontrollliste (ACL) og utvidet attributtstøtte.
  • rdiff-backup-statistics krever Python v2.4 eller nyere.

Hvordan installere rdiff-backup i Linux

Viktig: Hvis du opererer over et nettverk, må du installere rdiff-backup begge systemene, fortrinnsvis må begge installasjonene av rdiff-backup være nøyaktig samme versjon.

Skriptet er allerede til stede i de offisielle depotene til de vanlige Linux-distribusjonene, bare kjør kommandoen nedenfor for å installere rdiff-backup så vel som dens avhengigheter:

For å installere Rdiff-Backup på Ubuntu Focal eller Debian Bullseye eller nyere (har 2.0).

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

For å installere Rdiff-Backup på Ubuntu backports for eldre versjoner (trenger en backported 2.0).

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

For å installere Rdiff-Backup på CentOS og RHEL 8 (fra COPR).

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

For å installere Rdiff-Backup på CentOS og RHEL 7 (fra 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

For å installere Rdiff-Backup på Fedora 32+.

$ sudo dnf install rdiff-backup

Hvordan bruke rdiff-backup i Linux

Som jeg nevnte før, bruker rdiff-backup SSH for å koble til eksterne maskiner på nettverket ditt, og standardautentiseringen i SSH er brukernavn/passordmetoden, som normalt krever menneskelig interaksjon.

For å automatisere oppgaver som automatisk sikkerhetskopiering med skript og mer, må du imidlertid konfigurere enkel filsynkronisering eller overføring.

Når du har konfigurert SSH Passwordless Login, kan du begynne å bruke skriptet med følgende eksempler.

Eksemplet nedenfor vil sikkerhetskopiere /etc-katalogen i en Backup-katalog på en annen partisjon:

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

For å ekskludere en bestemt katalog så vel som dens underkataloger, kan du bruke --exclude-alternativet som følger:

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

Vi kan inkludere alle enhetsfiler, fifo-filer, socket-filer og symbolske lenker med --include-special-files-alternativet som nedenfor:

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

Det er to andre viktige flagg vi kan sette for filvalg; --max-file-size størrelse som ekskluderer filer som er større enn den gitte størrelsen i byte og --min-file-size størrelse som ekskluderer filer som er mindre enn den gitte størrelsen i byte:

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

For formålet med denne delen bruker vi:

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

Som vi sa tidligere, må du installere samme versjon av rdiff-backup på begge maskinene, prøv nå å sjekke versjonen på begge maskinene som følger:

$ rdiff-backup -V

På backupserveren oppretter du en katalog som lagrer sikkerhetskopifilene slik:

# mkdir -p /backups

Nå fra backupserveren, kjør følgende kommandoer for å lage en sikkerhetskopi av kataloger /var/log/ og /root fra ekstern Linux-server 192.168.56.102 i / sikkerhetskopier:

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

Skjermbildet nedenfor viser rotfilen på ekstern server 192.168.56.102 og de sikkerhetskopierte filene på bakserveren 192.168.56.10:

Legg merke til rdiff-backup-data-katalogen som er opprettet i backup-katalogen som vist på skjermbildet, den inneholder viktige data om sikkerhetskopieringsprosessen og inkrementelle filer.

Nå, på serveren 192.168.56.102, har flere filer blitt lagt til i rotkatalogen som vist nedenfor:

La oss kjøre backup-kommandoen en gang til for å få de endrede dataene, vi kan bruke -v[0-9] (hvor tallet spesifiserer detaljeringsnivået, standard er 3 som er stille) for å angi detaljeringsfunksjonen:

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

Og for å liste opp antall og dato for delvise inkrementelle sikkerhetskopier i katalogen /backups/192.168.56.102_rootfiles.backup, kan vi kjøre:

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

Vi kan skrive ut sammendragsstatistikk etter en vellykket sikkerhetskopiering med --print-statistics. Men hvis vi ikke angir dette alternativet, vil informasjonen fortsatt være tilgjengelig fra øktstatistikkfilen. Les mer om dette alternativet i STATISTIKK-delen av man-siden.

Og –remote-schema-flagget lar oss spesifisere en alternativ metode for å koble til en ekstern datamaskin.

La oss nå starte med å lage et backup.sh-skript på backupserveren 192.168.56.10 som følger:

# cd ~/bin
# vi backup.sh

Legg til følgende linjer i skriptfilen.

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

Lagre filen og avslutt, kjør deretter følgende kommando for å legge til skriptet til crontab på backupserveren 192.168.56.10:

# crontab -e

Legg til denne linjen for å kjøre sikkerhetskopieringsskriptet ditt daglig ved midnatt:

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

Lagre crontab og lukk den, nå har vi automatisert sikkerhetskopieringsprosessen. Sørg for at den fungerer som forventet.

Les gjennom rdiff-backup man-siden for ytterligere informasjon, uttømmende bruksalternativer og eksempler:

# man rdiff-backup

rdiff-backup hjemmeside: http://www.nongnu.org/rdiff-backup/

Det var det for nå! I denne opplæringen viste vi deg hvordan du installerer og i utgangspunktet bruker rdiff-backup, et brukervennlig Python-skript for lokal/ekstern inkrementell sikkerhetskopiering i Linux. Del tankene dine med oss via tilbakemeldingsdelen nedenfor.