rdiff-backup - Et Remote Incremental Backup Tool til Linux


rdiff-backup er et kraftfuldt og brugervenligt Python-script til lokal/ekstern inkrementel backup, der fungerer på ethvert POSIX-operativsystem som Linux, Mac OS X eller Cygwin. Det samler de bemærkelsesværdige træk ved et spejl og en trinvis sikkerhedskopi.

Det er vigtigt, at det bevarer underkataloger, dev-filer, hårde links og kritiske filattributter som tilladelser, uid/gid ejerskab, ændringstider, udvidede attributter, acls og ressourcegafler. Det kan arbejde i en båndbreddeeffektiv tilstand over et rør på en lignende måde som det populære rsync-backupværktøj.

rdiff-backup sikkerhedskopierer en enkelt mappe til en anden over et netværk ved hjælp af SSH, hvilket antyder, at dataoverførslen er krypteret og dermed sikker. Målkataloget (på det eksterne system) ender en nøjagtig kopi af kildekartoteket, men ekstra omvendte forskelle gemmes i en speciel underkatalog i målkataloget, hvilket gør det muligt at gendanne mistede filer for nogen tid siden.

For at bruge rdiff-backup i Linux skal du have følgende pakker installeret på dit system:

  • Python v2.2 eller nyere
  • librsync v0.9.7 eller senere
  • pylibacl og pyxattr Python-moduler er valgfri, men nødvendige for henholdsvis POSIX-adgangskontrolliste (ACL) og udvidet attributunderstøttelse.
  • rdiff-backup-statistik kræver Python v2.4 eller nyere.

Sådan installeres rdiff-backup i Linux

Vigtigt: Hvis du opererer over et netværk, skal du installere rdiff-backup begge systemer, fortrinsvis skal begge installationer af rdiff-backup være den nøjagtige samme version.

Scriptet er allerede til stede i de officielle opbevaringssteder for de almindelige Linux-distributioner, kør blot kommandoen nedenfor for at installere rdiff-backup såvel som dens afhængigheder:

At 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 at installere Rdiff-Backup på Ubuntu-backports til ældre versioner (har brug for en backported 2.0).

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

For at 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 at 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 at installere Rdiff-Backup på Fedora 32+.

$ sudo dnf install rdiff-backup

Sådan bruges rdiff-backup i Linux

Som jeg nævnte før, bruger rdiff-backup SSH til at oprette forbindelse til eksterne maskiner på dit netværk, og standardgodkendelse i SSH er brugernavnet/adgangskodemetoden, som normalt kræver menneskelig interaktion.

For at automatisere opgaver som automatisk sikkerhedskopiering med scripts og derover skal du dog konfigurere let filsynkronisering eller overførsel.

Når du har konfigureret SSH Passwordless Login, kan du begynde at bruge scriptet med følgende eksempler.

Eksemplet nedenfor sikkerhedskopierer /etc -mappen i en Backup-mappe på en anden partition:

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

For at ekskludere en bestemt mappe såvel som dens underkataloger kan du bruge indstillingen --exclude som følger:

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

Vi kan inkludere alle enhedsfiler, fiveo-filer, socket-filer og symbolske links med indstillingen --include-special-files som nedenfor:

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

Der er to andre vigtige flag, vi kan indstille til filvalg; --max-filstørrelse størrelse, der ekskluderer filer, der er større end den givne størrelse i bytes, og --min-file-size størrelse, der ekskluderer filer, der er mindre end den givne størrelse i byte:

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

I forbindelse med dette afsnit bruger vi:

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

Som vi nævnte før, skal du installere den samme version af rdiff-backup på begge maskiner, prøv nu at kontrollere versionen på begge maskiner som følger:

$ rdiff-backup -V

På backup-serveren skal du oprette en mappe, der gemmer backup-filerne således:

# mkdir -p /backups

Kør følgende kommandoer fra backup-serveren for at lave en sikkerhedskopi af mapper /var/log/ og /root fra Linux-server 192.168.56.102 i /sikkerhedskopier :

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

Skærmbilledet nedenfor viser rodfilen på fjernserveren 192.168.56.102 og de sikkerhedskopierede filer på bagserveren 192.168.56.10:

Vær opmærksom på mappen rdiff-backup-data oprettet i mappen backup som vist på skærmbilledet, den indeholder vigtige data vedrørende sikkerhedskopieringsprocessen og inkrementelle filer.

Nu, på serveren 192.168.56.102, er der tilføjet yderligere filer til rodmappen som vist nedenfor:

Lad os køre sikkerhedskopieringskommandoen igen for at få de ændrede data, vi kan bruge -v [0-9] (hvor nummeret angiver det detaljerede niveau, standard er 3, som er lydløs) til indstil den detaljerede funktion:

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

Og for at liste antallet og datoen for delvise trinvise sikkerhedskopier indeholdt i /backups/192.168.56.102_rootfiles.backup-biblioteket kan vi køre:

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

Vi kan udskrive oversigtsstatistikker efter en vellykket sikkerhedskopi med --print-statistics . Men hvis vi ikke indstiller denne mulighed, vil oplysningerne stadig være tilgængelige fra sessionsstatistikfilen. Læs mere om denne mulighed i STATISTIK-sektionen på mandsiden.

Og -fjernskema-flag gør det muligt for os at specificere en alternativ metode til at oprette forbindelse til en fjerncomputer.

Lad os nu starte med at oprette et backup.sh script på backup-serveren 192.168.56.10 som følger:

# cd ~/bin
# vi backup.sh

Føj følgende linjer til scriptfilen.

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

Gem filen og afslut, og kør derefter følgende kommando for at tilføje scriptet til crontab på backup-serveren 192.168.56.10:

# crontab -e

Tilføj denne linje for at køre dit backup-script dagligt ved midnat:

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

Gem crontab, og luk den, nu har vi automatiseret sikkerhedskopieringsprocessen. Sørg for, at den fungerer som forventet.

Læs gennem md-siden til rdiff-backup for yderligere info, udtømmende brugsmuligheder og eksempler:

# man rdiff-backup

Hjemmeside for rdiff-backup: http://www.nongnu.org/rdiff-backup/

Det er det for nu! I denne vejledning viste vi dig, hvordan du installerer og dybest set bruger rdiff-backup, et brugervenligt Python-script til lokal/ekstern inkrementel backup i Linux. Del dine tanker med os via feedback-sektionen nedenfor.