Zoeken op website

rdiff-backup - Een externe incrementele back-uptool voor Linux


rdiff-backup is een krachtig en eenvoudig te gebruiken Python-script voor lokale/externe incrementele back-up, dat werkt op elk POSIX-besturingssysteem zoals Linux, Mac OS X of Cygwin. Het combineert de opmerkelijke kenmerken van een spiegelserver en een incrementele back-up.

Het is veelbetekenend dat het submappen, dev-bestanden, harde links en cruciale bestandskenmerken behoudt, zoals machtigingen, uid/gid-eigendom, wijzigingstijden, uitgebreide kenmerken, acls en bronvorken. Het kan in een bandbreedte-efficiënte modus via een pipe werken, op een vergelijkbare manier als de populaire rsync-back-uptool.

rdiff-backup maakt een back-up van een enkele map naar een andere via een netwerk met behulp van SSH, wat impliceert dat de gegevensoverdracht gecodeerd en dus veilig is. De doelmap (op het externe systeem) is uiteindelijk een exacte kopie van de bronmap, maar extra reverse diffs worden opgeslagen in een speciale submap in de doelmap, waardoor het mogelijk wordt om bestanden te herstellen die enige tijd geleden verloren zijn gegaan.

Afhankelijkheden

Om rdiff-backup in Linux te gebruiken, moeten de volgende pakketten op uw systeem zijn geïnstalleerd:

  • Python v2.2 of hoger
  • librsync v0.9.7 of hoger
  • pylibacl en pyxattr Python-modules zijn optioneel maar noodzakelijk voor respectievelijk POSIX-toegangscontrolelijst (ACL) en uitgebreide attribuutondersteuning.
  • rdiff-backup-statistics vereist Python v2.4 of hoger.

Hoe rdiff-backup in Linux te installeren

Belangrijk: als u via een netwerk werkt, moet u rdiff-backup op beide systemen installeren, bij voorkeur moeten beide installaties van rdiff-backup exact hetzelfde zijn dezelfde versie.

Het script is al aanwezig in de officiële repositories van de reguliere Linux-distributies. Voer eenvoudigweg de onderstaande opdracht uit om rdiff-backup en de afhankelijkheden ervan te installeren:

Installeer een rdiff-back-up op Ubuntu

Om Rdiff-Backup te installeren op Ubuntu Focal of Debian Bullseye of nieuwer (beschikt over 2.0).


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

Om Rdiff-Backup te installeren op Ubuntu-backports voor oudere versies (vereist een backported 2.0).


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

Op CentOS/RHEL 8

Om Rdiff-Backup te installeren op CentOS en RHEL 8 (van COPR).


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

Op CentOS/RHEL 7

Om Rdiff-Backup te installeren op CentOS en RHEL 7 (van COPR).


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

Op 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

Op Fedora

Om Rdiff-Backup op Fedora 32+ te installeren.


sudo dnf install rdiff-backup

Hoe rdiff-back-up te gebruiken in Linux

Zoals ik eerder al zei, gebruikt rdiff-backup SSH om verbinding te maken met externe machines in uw netwerk, en de standaardauthenticatie in SSH is de gebruikersnaam/wachtwoordmethode, waarvoor normaal gesproken menselijke interactie vereist is.

Om taken zoals automatische back-ups met scripts en meer te automatiseren, moet u SSH Wachtwoordloos Inloggen met behulp van SSH-sleutels configureren, omdat SSH-sleutels het vertrouwen tussen twee Linux-servers vergroten voor eenvoudige bestandssynchronisatie of -overdracht.

Nadat u SSH Passwordless Login heeft ingesteld, kunt u het script gaan gebruiken met de volgende voorbeelden.

Maak een back-up van bestanden naar een andere partitie

In het onderstaande voorbeeld wordt een back-up gemaakt van de map /etc in een map Backup op een andere partitie:

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

Om een bepaalde map en de submappen ervan uit te sluiten, kunt u de optie --exclude als volgt gebruiken:

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

We kunnen alle apparaatbestanden, fifo-bestanden, socketbestanden en symbolische links opnemen met de optie --include-special-files, zoals hieronder:

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

Er zijn nog twee andere belangrijke vlaggen die we kunnen instellen voor bestandsselectie; --max-file-size grootte die bestanden uitsluit die groter zijn dan de opgegeven grootte in bytes en --min-file-size grootte die bestanden uitsluit die kleiner zijn dan de opgegeven grootte in bytes:

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

Maak een back-up van externe bestanden op de lokale Linux-server

Voor de doeleinden van deze sectie gebruiken we:

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

Zoals we eerder hebben aangegeven, moet u op beide machines dezelfde versie van rdiff-backup installeren. Probeer nu als volgt de versie op beide machines te controleren:

rdiff-backup -V

Maak op de back-upserver een map aan waarin de back-upbestanden als volgt worden opgeslagen:

mkdir -p /backups

Voer nu vanaf de back-upserver de volgende opdrachten uit om een back-up te maken van de mappen /var/log/ en /root vanaf de externe Linux-server 192.168.56.102 in /back-ups:

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

De onderstaande schermafbeelding toont het rootbestand op de externe server 192.168.56.102 en de back-upbestanden op de backserver 192.168.56.10:

Let op de map rdiff-backup-data die is aangemaakt in de map backup, zoals te zien in de schermafbeelding. Deze bevat essentiële gegevens over het back-upproces en incrementele bestanden.

Nu zijn er op de server 192.168.56.102 extra bestanden toegevoegd aan de hoofdmap, zoals hieronder weergegeven:

Laten we het back-upcommando nog een keer uitvoeren om de gewijzigde gegevens op te halen. We kunnen de optie -v[0-9] gebruiken (waarbij het getal het breedsprakigheidsniveau specificeert, standaard is 3, wat stil is) om stel de breedsprakigheidsfunctie in:

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

En om het aantal en de datum van gedeeltelijke incrementele back-ups in de map /backups/192.168.56.102_rootfiles.backup weer te geven, kunnen we het volgende uitvoeren:

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

Automatisering van rdiff-back-back-up met behulp van Cron

We kunnen samenvattende statistieken afdrukken na een succesvolle back-up met de --print-statistics. Als we deze optie echter niet instellen, is de informatie nog steeds beschikbaar in het sessiestatistiekenbestand. Lees meer over deze optie in de STATISTIEKEN sectie van de manpagina.

En met de vlag –remote-schema kunnen we een alternatieve methode opgeven om verbinding te maken met een externe computer.

Laten we nu beginnen met het maken van een backup.sh-script op de back-upserver 192.168.56.10 als volgt:

cd ~/bin
vi backup.sh

Voeg de volgende regels toe aan het scriptbestand.

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

Sla het bestand op, sluit het af en voer vervolgens de volgende opdracht uit om het script toe te voegen aan de crontab op de back-upserver 192.168.56.10:

crontab -e

Voeg deze regel toe om uw back-upscript dagelijks om middernacht uit te voeren:

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

Sla de crontab op en sluit deze. Nu hebben we het back-upproces met succes geautomatiseerd. Zorg ervoor dat het werkt zoals verwacht.

Lees de rdiff-backup man-pagina voor aanvullende informatie, uitgebreide gebruiksopties en voorbeelden:

man rdiff-backup

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

Dat is het voor nu! In deze zelfstudie hebben we u laten zien hoe u rdiff-backup installeert en in principe gebruikt, een eenvoudig te gebruiken Python-script voor lokale/externe incrementele back-up in Linux. Deel uw mening met ons via het feedbackgedeelte hieronder.