Rsnapshot (Rsync Based) - E Lokalen/Remote Dateisystem Backup Utility fir Linux


rsnapshot ass en Open Source lokalen/Remote Dateiesystem Backup Utility gouf an der Perl Sprooch geschriwwen, déi d'Kraaft vum Rsync an SSH Programm profitéiere fir, geplangten inkrementell Backupe vu Linux/Unix Dateiesystemer ze kreéieren, wärend nëmmen de Raum vun engem eenzege komplette Backup plus Differenzen ophëlt. an halen dës Backups op lokalen Drive op eng aner Festplack, en externen USB Stick, en NFS montéierten Drive oder einfach iwwer d'Netzwierk op eng aner Maschinn iwwer SSH.

Dësen Artikel wäert demonstréieren wéi Dir rsnapshot installéiere kënnt, astellen a benotzt fir inkrementell Stonn, deeglech, wëchentlech a monatlecht lokal Backups ze kreéieren, souwéi Fernbackups. Fir all Schrëtt an dësem Artikel auszeféieren, musst Dir root Benotzer sinn.

Schrëtt 1: Installéiert Rsnapshot Backup op Linux

Installatioun vu rsnapshot mat Yum an APT ka liicht ënnerscheeden, wann Dir Red Hat an Debian baséiert Verdeelungen benotzt.

Als éischt musst Dir Drëtt Partei Repository mam Numm EPEL installéieren an aktivéieren. Follegt w.e.g. de Link hei ënnen fir ënner Ären RHEL/CentOS Systemer z'installéieren an z'aktivéieren. Fedora Benotzer erfuerderen keng speziell Repository Konfiguratiounen.

  1. Installéieren an aktivéieren EPEL Repository am RHEL/CentOS 6/5/4

Wann Dir d'Saachen opgestallt hutt, installéiert rsnapshot vun der Kommandozeil wéi gewisen.

# yum install rsnapshot

Par défaut ass rsnapshot an Ubuntu Repositories abegraff, sou datt Dir et mat apt-get Kommando installéiere kënnt wéi gewisen.

# apt-get install rsnapshot

Schrëtt 2: Astelle SSH Passwuert-manner Login

Fir Remote Linux Serveren ze backen, kann Äre rsnapshot Backup Server iwwer SSH verbannen ouni Passwuert. Fir dëst z'erreechen, musst Dir en SSH ëffentlechen a private Schlëssel erstellen fir op den rsnapshot Server ze authentifizéieren. Follegt w.e.g. de Link hei ënnen fir eng ëffentlech a privat Schlësselen op Ärem rsnapshot Backup Server ze generéieren.

  1. Erstellt SSH Passwuertlos Login Mat SSH Keygen

Schrëtt 3: Rsnapshot konfiguréieren

Elo musst Dir e puer Parameteren an d'rsnapshot Konfiguratiounsdatei änneren an addéieren. Open rsnapshot.conf Datei mat vi oder Nano Editor.

# vi /etc/rsnapshot.conf

Als nächst erstellt e Backup-Verzeichnis, wou Dir all Är Backupe wëllt späicheren. A mengem Fall ass mäi Backup-Verzeichnis Location \/data/backup/. Sich no an ännert de folgende Parameter fir de Backup-Location ze setzen.

snapshot_root			 /data/backup/

Kommentéiert och d'cmd_ssh Linn fir Remote Backups iwwer SSH ze huelen. Fir d'Linn ze kommentéieren, läscht den # virun der folgender Linn ewech, sou datt rsnapshot Är Donnéeën sécher op e Backup-Server transferéiere kann.

cmd_ssh			/usr/bin/ssh

Als nächst musst Dir entscheeden wéivill al Backups Dir wëllt halen, well rsnapshot keng Ahnung hat wéi oft Dir Snapshots maache wëllt. Dir musst spezifizéieren wéi vill Donnéeën ze späicheren, Intervalle addéieren fir ze halen a wéi vill vun all.

Gutt, d'Standardastellunge si gutt genuch, awer trotzdem géif ech gär datt Dir den monatlecht Intervall aktivéiert fir datt Dir och méi laangfristeg Backups op der Plaz hutt.Ännere w.e.g. dës Sektioun fir ähnlech wéi déi folgend Astellungen ze kucken.

#########################################
#           BACKUP INTERVALS            #
# Must be unique and in ascending order #
# i.e. hourly, daily, weekly, etc.      #
#########################################

interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3

Eng méi Saach déi Dir musst änneren ass ssh_args Variabel. Wann Dir de Standard SSH Port (22) op eppes anescht geännert hutt, musst Dir dës Portnummer vun Ärem Remote Backup Server spezifizéieren.

ssh_args		-p 7851

Endlech, füügt Är lokal a Fern-Backup-Verzeichnungen un, déi Dir wëllt Backupsatellit maachen.

Wann Dir décidéiert hutt Är Verzeichnisser lokal op déiselwecht Maschinn ze backen, da gesäit de Backup-Entrée esou aus. Zum Beispill, ech huelen Backupsatellit vun meng/tecmint an/etc Verzeechnes.

backup		/tecmint/		localhost/
backup		/etc/			localhost/

Wann Dir wëllt e Backup vun engem Remote Server Verzeichnungen opmaachen, da musst Dir dem rsnapshot soen wou de Server ass a wéi eng Verzeichnisser Dir wëllt backen. Hei huelen ech e Backup vu mengem Fernserver /home Verzeechnes ënner /data/backup Verzeechnes um rsnapshot Server.

backup		 [email :/home/ 		/data/backup/

Liest och:

  1. Wéi ee Backup/Synchroniséiert Verzeichnungen mam Rsync (Remote Sync) Tool benotzt
  2. Wéi Transfermaart Dateien/Ordner mat SCP Kommando

Hei wäert ech alles ausschléissen, an dann nëmmen spezifesch definéieren wat ech wëll backen. Fir dëst ze maachen, musst Dir eng ausgeschloss Datei erstellen.

# vi /data/backup/tecmint.exclude

Gitt als éischt d'Lëscht vun de Verzeichnisser déi Dir wëllt backen a fügen ( – * ) derbäi fir alles anescht auszeschléissen. Dëst wäert nëmme Backupsatellit maachen wat Dir an der Datei opgezielt hutt. Meng auszeschléissen Fichier gesäit ähnlech wéi ënnendrënner.

+ /boot
+ /data
+ /tecmint
+ /etc
+ /home
+ /opt
+ /root
+ /usr
- /usr/*
- /var/cache
+ /var
- /*

D'Benotzung vun der Ausgrenzungsdateioptioun ka ganz komplizéiert sinn wéinst der Benotzung vun der rsync Rekursioun. Also, mäi Beispill uewendriwwer ass vläicht net wat Dir sicht. Als nächst füügt d'Exklusiounsdatei op d'rsnapshot.conf Datei.

exclude_file    /data/backup/tecmint.exclude

Endlech sidd Dir bal fäerdeg mat der initialer Konfiguratioun. Späichert d'Konfiguratiounsdatei /etc/rsnapshot.conf ier Dir weider geet. Et gi vill Optiounen fir z'erklären, awer hei ass meng Probe Configuratiounsdatei.

config_version  1.2
snapshot_root   /data/backup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
cmd_du  /usr/bin/du
interval        hourly  6
interval        daily   7
interval        weekly  4
interval        monthly 3
ssh_args	-p 25000
verbose 	2
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/backup/tecmint.exclude
rsync_long_args --delete        --numeric-ids   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup		/tecmint/		localhost/
backup		/etc/			localhost/
backup		[email :/home/ 		/data/backup/

All déi uewe genannte Optiounen an Argumenterklärungen sinn wéi follegt:

  1. config_version 1.2 = Configuratiounsdatei Versioun
  2. snapshot_root = Backup Destinatioun fir Snapshots ze späicheren
  3. cmd_cp = Wee fir de Kommando ze kopéieren
  4. cmd_rm = Wee fir de Kommando ze läschen
  5. cmd_rsync = Wee op rsync
  6. cmd_ssh = Wee op SSH
  7. cmd_logger = Wee zu Shell Kommando-Interface op Syslog
  8. cmd_du = Wee op d'Disknotzungskommando
  9. Intervall Stonneplang = Wéivill Stonnebackups fir ze halen.
  10. Intervall deeglech = Wéivill deeglech Backupe fir ze halen.
  11. Intervall wöchentlech = Wéivill wöchentlech Backupe fir ze halen.
  12. intervall monatlech = Wéi vill monatlecht Backupe fir ze halen.
  13. ssh_args = Optional SSH Argumenter, wéi en anere Port (-p )
  14. verbose = Selwererklärend
  15. loglevel = Selwererklärend
  16. logfile = Wee fir de Logdatei
  17. exclude_file = Wee fir d'Exclusiounsdatei (gëtt méi detailléiert erkläert)
  18. rsync_long_args = Laang Argumenter fir op rsync ze passéieren
  19. lockfile = Selwererklärend
  20. Backup = Volle Wee fir dat ze backen, gefollegt vum relativen Wee vun der Placement.

Schrëtt 4: Verifizéiert Rsnapshot Konfiguratioun

Wann Dir mat Ärer ganzer Konfiguratioun gemaach hutt, ass et Zäit fir z'iwwerpréiwen datt alles funktionnéiert wéi erwaart. Fëllt de folgende Kommando aus fir z'iwwerpréiwen datt Är Konfiguratioun déi richteg Syntax huet.

# rsnapshot configtest

Syntax OK

Wann alles richteg konfiguréiert ass, kritt Dir e Message Syntax OK. Wann Dir Fehlermeldungen kritt, heescht dat, datt Dir dës Feeler korrigéiere musst ier Dir rsnapshot leeft.

Als nächst, maacht en Testlaf op engem vun de Schnappschëss fir sécher ze stellen datt mir korrekt Resultater generéieren. Mir huelen den Stonn Parameter fir en Test ze maachen mat -t (Test) Argument. Dëst ënnen Kommando weist eng verbose Lëscht vun de Saachen déi et wäert maachen, ouni se wierklech ze maachen.

# rsnapshot -t hourly
echo 2028 > /var/run/rsnapshot.pid 
mkdir -m 0700 -p /data/backup/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /home \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded /etc \
    /backup/hourly.0/localhost/ 
mkdir -m 0755 -p /data/backup/hourly.0/ 
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    /usr/local /data/backup/hourly.0/localhost/ 
touch /data/backup/hourly.0/

Notiz: Deen uewe genannte Kommando erzielt rsnapshot fir e Stonn Backup ze kreéieren. Et dréckt tatsächlech d'Befehle eraus déi et wäert ausféieren wa mir et wierklech ausféieren.

Schrëtt 5: Rsnapshot manuell lafen

Nodeems Dir Är Resultater verifizéiert hutt, kënnt Dir d'-t Optioun ewechhuelen fir de Kommando wierklech auszeféieren.

# rsnapshot hourly

Deen uewe genannte Kommando leeft de Backup-Skript mat all der Konfiguratioun, déi mir an der rsnapshot.conf-Datei bäigefüügt hunn a erstellt e Backup Verzeichnis an erstellt dann d'Verzeichnisstruktur ënner deem, déi eis Dateien organiséiert. Nodeems Dir uewe Kommando ausgefouert hutt, kënnt Dir d'Resultater verifizéieren andeems Dir an de Backup-Verzeichnis gitt an d'Verzeichnisstruktur mat ls -l Kommando lëscht wéi gewisen.

# cd /data/backup
# ls -l

total 4
drwxr-xr-x 3 root root 4096 Oct 28 09:11 hourly.0

Schrëtt 6: Automatiséieren de Prozess

Fir de Prozess ze automatiséieren, musst Dir rsnapshot plangen fir a bestëmmten Intervalle vu Cron ze lafen. Par défaut kënnt rsnapshot mat Cron Datei ënner /etc/cron.d/rsnapshot, wann et net existéiert, erstellt een a füügt déi folgend Zeilen derbäi.

Par défaut ginn d'Regele kommentéiert, also musst Dir den \# virun der Zäitplangsektioun ewechhuelen fir dës Wäerter z'aktivéieren.

# This is a sample cron file for rsnapshot.
# The values used correspond to the examples in /etc/rsnapshot.conf.
# There you can also set the backup points and many other things.
#
# To activate this cron file you have to uncomment the lines below.
# Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly
30     3     * * *    root    /usr/bin/rsnapshot daily
0      3     * * 1    root    /usr/bin/rsnapshot weekly
30     2     1 * *    root    /usr/bin/rsnapshot monthly

Loosst mech genau erklären, wat uewe genannte Cron Reegele mécht:

  1. Laaft all 4 Stonnen an erstellt e Stonneplang ënner /backup Verzeechnes.
  2. Laaft all Dag um 3:30 Auer a erstellt en deegleche Verzeechnes ënner /Backup Verzeechnes.
  3. Laaft wöchentlech all Méindes um 3:00 Auer a erstellt e wëchentlechen Dossier ënner /Backup Verzeechnes.
  4. Leeft all Mount um 2:30 Auer a erstellt e monatlecht Verzeechnes ënner /backup Verzeechnes.

Fir besser ze verstoen wéi Cron Regelen funktionnéieren, proposéiere ech Iech eisen Artikel ze liesen deen beschreift.

  1. 11 Cron Scheduling Beispiller

Schrëtt 7: Rsnapshot Berichter

De rsnapshot bitt e klengt klengt Bericht Perl Skript, deen Iech eng E-Mail Alarm schéckt mat all Detailer iwwer wat geschitt ass während Ärem Datebackup. Fir dëst Skript opzestellen, musst Dir de Skript iergendwou ënner /usr/local/bin kopéieren an et ausführbar maachen.

# cp /usr/share/doc/rsnapshot-1.3.1/utils/rsnapreport.pl /usr/local/bin
# chmod +x /usr/local/bin/rsnapreport.pl

Als nächst füügt –stats Parameter an Ärer rsnapshot.conf Datei an d'rsync laang Argumenter Sektioun.

vi /etc/rsnapshot.conf
rsync_long_args --stats	--delete        --numeric-ids   --delete-excluded

Elo änneren d'crontab Reegelen déi virdru bäigefüügt goufen a rufft de rsnapreport.pl Skript fir d'Rapporte op eng spezifizéiert E-Mailadress ze passéieren.

# This is a sample cron file for rsnapshot.
# The values used correspond to the examples in /etc/rsnapshot.conf.
# There you can also set the backup points and many other things.
#
# To activate this cron file you have to uncomment the lines below.
# Feel free to adapt it to your needs.

0     */4    * * *    root    /usr/bin/rsnapshot hourly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Hourly Backup" [email 
30     3     * * *    root    /usr/bin/rsnapshot daily 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Daily Backup" [email 
0      3     * * 1    root    /usr/bin/rsnapshot weekly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Weekly Backup" [email 
30     2     1 * *    root    /usr/bin/rsnapshot monthly 2>&1  | \/usr/local/bin/rsnapreport.pl | mail -s "Montly Backup" [email 

Wann Dir uewen Entréen richteg bäigefüügt hutt, kritt Dir e Bericht op Är E-Mailadress ähnlech wéi hei drënner.

SOURCE           TOTAL FILES	FILES TRANS	TOTAL MB    MB TRANS   LIST GEN TIME  FILE XFER TIME
--------------------------------------------------------------------------------------------------------
localhost/          185734	   11853   	 2889.45    6179.18    40.661 second   0.000 seconds

Referenz Linken

  1. rsnapshot Homepage

Dat ass et fir de Moment, wann Problemer während der Installatioun optrieden, schéckt mir e Kommentar. Bis dann bleift op TecMint ofgeschloss fir méi interessant Artikelen iwwer d'Open Source Welt.