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.