rdiff-Backup - E Remote Incremental Backup Tool fir Linux


rdiff-Backup ass e mächtegt an einfach ze benotzen Python Skript fir lokal/Remote inkrementelle Backup, déi op all POSIX Betribssystem wéi Linux, Mac OS X oder Cygwin funktionnéiert. Et bréngt déi bemierkenswäert Feature vun engem Spigel an engem inkrementelle Backup zesummen.

Bedeitend behält et Ënnerverzeechnungen, Dev Dateien, haart Linken, a kritesch Dateiattributer wéi Permissiounen, Uid/Gid Besëtz, Modifikatiounszäiten, erweidert Attributer, acls, a Ressourcegabel. Et kann an engem bandwidth-effizienten Modus iwwer e Päif funktionnéieren, op eng ähnlech Manéier wéi de populäre rsync Backup-Tool.

rdiff-Backup mécht en eenzegen Verzeechnes op en aneren iwwer e Netzwierk mat SSH, wat implizéiert datt den Datentransfer verschlësselt ass also sécher. Den Zilverzeechnes (um Fernsystem) endet op eng exakt Kopie vum Quellverzeechnes, awer extra ëmgedréint Differenzen ginn an engem speziellen Ënnerverzeechnes am Zilverzeichnis gespäichert, wat et méiglech mécht Dateien ze recuperéieren déi virun enger Zäit verluer sinn.

Fir rdiff-Backup op Linux ze benotzen, braucht Dir déi folgend Packagen op Ärem System installéiert:

  • Python v2.2 oder méi spéit
  • librsync v0.9.7 oder méi spéit
  • pylibacl a pyxattr Python Moduler sinn fakultativ awer néideg fir POSIX Zougangskontrolllëscht (ACL) respektiv erweidert Attributer Ënnerstëtzung.
  • rdiff-backup-statistics erfuerdert Python v2.4 oder méi spéit.

Wéi installéiere ech rdiff-Backup op Linux

Wichteg: Wann Dir iwwer engem Netz operéiert, musst Dir rdiff-Backup béid Systemer installéieren, am léifsten béid Installatiounen vum rdiff-Backup musse genau déiselwecht Versioun sinn.

De Skript ass scho präsent an den offiziellen Repositories vun den Mainstream Linux Verdeelungen, fuert einfach de Kommando hei ënnen fir rdiff-Backup ze installéieren souwéi seng Ofhängegkeeten:

Fir Rdiff-Backup op Ubuntu Focal oder Debian Bullseye oder méi nei ze installéieren (huet 2.0).

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

Fir Rdiff-Backup op Ubuntu Backports fir eeler Versiounen z'installéieren (braucht e Backported 2.0).

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

Fir Rdiff-Backup op CentOS an RHEL 8 (vu COPR) z'installéieren.

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

Fir Rdiff-Backup op CentOS an RHEL 7 (vu COPR) z'installéieren.

$ 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

Fir Rdiff-Backup op Fedora 32+ z'installéieren.

$ sudo dnf install rdiff-backup

Wéi benotzen ech rdiff-Backup op Linux

Wéi ech virdru scho gesot hunn, benotzt rdiff-Backup SSH fir mat Fernmaschinnen op Ärem Netz ze verbannen, an d'Standardauthentifikatioun an SSH ass de Benotzernumm/Passwuert Method, déi normalerweis mënschlech Interaktioun erfuerdert.

Wéi och ëmmer, fir Aufgaben ze automatiséieren wéi automatesch Backups mat Scripten an doriwwer eraus, musst Dir einfach Dateisynchroniséierung oder Transfert konfiguréieren.

Wann Dir SSH Passwuertlos Login ageriicht hutt, kënnt Dir de Skript mat de folgende Beispiller benotzen.

D'Beispill hei drënner wäert den /etc Verzeechnes an engem Backup-Verzeichnis op enger anerer Partition backen:

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

Fir e bestëmmten Verzeechnes wéi och seng Ënnerverzeechnungen auszeschléissen, kënnt Dir d'Optioun --exclude benotzen wéi follegt:

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

Mir kënnen all Apparatdateien, Fifo-Dateien, Socket-Dateien a symbolesch Linken mat der --include-special-files Optioun enthalen wéi hei ënnendrënner:

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

Et ginn zwou aner wichteg Fändelen mir fir Fichier Auswiel Formatioun kann; --max-Datei-Gréisst Gréisst déi Dateien ausgeschloss déi méi grouss sinn wéi déi uginn Gréisst a Bytes an --min-Dateigréisst Gréisst déi Dateien ausgeschloss déi méi kleng sinn wéi déi uginn Gréisst a Bytes:

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

Fir den Zweck vun dëser Sektioun benotze mir:

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

Wéi mir virdru gesot hunn, musst Dir déiselwecht Versioun vum rdiff-Backup op béide Maschinnen installéieren, probéiert elo d'Versioun op béide Maschinnen wéi follegt ze kontrolléieren:

$ rdiff-backup -V

Op de Backupserver erstellt e Verzeichnis deen d'Backupdateien sou späichert:

# mkdir -p /backups

Elo vum Backup-Server, lafen déi folgend Befehle fir e Backup vu Verzeichnungen /var/log/ an /root vum Remote Linux Server 192.168.56.102 an / Backups:

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

De Screenshot hei ënnen weist d'Root-Datei um Remote Server 192.168.56.102 an d'backup Dateien um Back Server 192.168.56.10:

Notéiert den rdiff-backup-Daten Verzeichnis erstallt am Backup Verzeichnis wéi am Screenshot gesi, et enthält vital Daten betreffend de Backupprozess an inkrementelle Dateien.

Elo, um Server 192.168.56.102, goufen zousätzlech Dateien an de Root-Verzeichnis bäigefüügt wéi hei ënnendrënner:

Loosst eis de Backup-Kommando nach eng Kéier ausféieren fir déi geännert Donnéeën ze kréien, mir kënnen d'Optioun -v[0-9] benotzen (wou d'Zuel de Verbositéitsniveau spezifizéiert, Standard ass 3 déi roueg ass) Set d'Verbositéit Feature:

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

A fir d'Zuel an den Datum vun deelweis inkrementelle Backups ze lëschten, déi am /backups/192.168.56.102_rootfiles.backup Verzeichnis enthale sinn, kënne mir lafen:

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

Mir kënnen Zesummefaassungsstatistiken no engem erfollegräiche Backup mam --print-statistics drécken. Wéi och ëmmer, wa mir dës Optioun net setzen, wäert d'Info nach ëmmer aus der Sessiounsstatistik Datei verfügbar sinn. Liest méi iwwer dës Optioun an der STATISTIK Sektioun vun der Mann Säit.

An de –remote-schema Fändel erlaabt eis eng alternativ Method ze spezifizéieren fir mat engem Ferncomputer ze verbannen.

Elo, loosst eis ufänken mat engem backup.sh Skript um Backupserver 192.168.56.10 wéi follegt ze kreéieren:

# cd ~/bin
# vi backup.sh

Füügt déi folgend Zeilen an d'Skriptdatei.

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

Späichert d'Datei a gitt eraus, da fuert de folgende Kommando fir de Skript op de Crontab op de Backup-Server 192.168.56.10 ze addéieren:

# crontab -e

Füügt dës Zeil fir Äre Backup-Skript all Dag um Mëtternuecht auszeféieren:

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

Späichert de Crontab a maach se zou, elo hu mir de Backupprozess automatiséiert. Vergewëssert Iech datt et funktionnéiert wéi erwaart.

Liest duerch d'rdiff-Backup Man Säit fir zousätzlech Informatioun, ustrengend Benotzungsoptiounen a Beispiller:

# man rdiff-backup

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

Dat ass et fir elo! An dësem Tutorial hu mir Iech gewisen wéi Dir rdiff-Backup installéiert an am Fong benotzt, en einfach ze benotzen Python Skript fir lokal/Remote inkrementell Backup op Linux. Deelt Är Gedanken mat eis iwwer de Feedback Sektioun hei drënner.