Server backup met Rsnapshot in CentOS 6

Rsnapshot

Tom heeft jullie in een vorig artikel het een en ander geschreven over goede backups voor elke server.

Dit keer ga ik jullie uitleggen hoe je zelf back-ups regelt met Rsnaphot.

rsnapshot 300x64 Server backup met Rsnapshot in CentOS 6 nieuws

Rsnapshot is een set Perl-scripts rondom rsync en basis GNU programma’s als rm, cp en touch.

Rsnapshot maakt slim gebruik van de ‘hard link’ functionaliteit van moderne UNIX bestandssystemen. Het lijkt alsof je elke keer een volledige backup bekijkt terwijl het in feite een incrementele is waarbij de ongewijzigde bestanden verwijzen naar dezelfde bestanden uit de vorige backup. De incrementaliteit is dus volledig weggewerkt: dit biedt de eenvoud van meerdere volledige backups, terwijl toch slechts de ruimte van één backup en de wijzigingen benodigd is.

Voorbeeld

Als voorbeeldnamen ga ik backupserver, webserver1 en webserver2 gebruiken. Ik gebruik als voorbeeld domeinnamen, je kunt deze ook vervangen door IP adressen.

BELANGRIJK

Je MOET overal TABS gebruiken i.p.v. spatie. Doe dit vanaf het begin meteen goed anders moet je later de hele code doorzoeken naar de spatie.

Directory’s worden altijd zo geschreven: /home/ dus met afsluitende / .

Rsnapshot installeren

yum install rsnapshot

Mocht yum niks vinden installeer dan de EPEL repo.

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm

Configuratie

nano /etc/rsnapshot.conf

 

Kies de plaats waar je de back-ups wilt opslaan. Ik ga ze op slaan in /home/snapshots/

# All snapshots will be stored under this root directory.
#
snapshot_root /home/snapshots/

Pas de volgende instellingen aan. Vergeet de TABS niet.

sync_first   1

no_create_root   1

cmd_cp   /bin/cp

cmd_ssh   /usr/bin/ssh

cmd_du   /usr/bin/du

logfile   /var/log/rsnapshot

 

Backup frequentie

Ik kies ervoor om 1 keer per dag een back-up te maken van mijn webservers. (pas dit aan in de rsnapshot.conf)

#interval hourly 6

interval daily 7

#interval weekly 4

#interval monthly 3

 

Waar gaan we backups van maken?

We gaan back-ups van de /home/ en de /var/www/  directory’s. (nog steeds in de rsnapshot.conf)

###############################

### BACKUP POINTS / SCRIPTS ###

###############################

backup webserver1.com:/home/            webserver1/

backup webserver1.com:/var/www/     webserver1/

backup webserver2.com:/home/            webserver2/

backup webserver2.com:/var/www/     webserver2/

Het mapje waar we mee eindigen is de map die word aangemaakt in de directory die we in het begin hebben aangegeven waar we alle back-ups willen opslaan.

Natuurlijk is het ook handig om bepaalde dingen in deze mappen te excluden. Dit gaat als volgt (rsnapshot.conf)

# The include and exclude parameters, if enabled, simply get passed

# to rsync. If you have multiple include/exclude patterns, put each one on

# separate line. Please look up the –include and –exclude options in the

# rsync man page for more details on how to specify file name patterns.

#

exclude /home/admin

exclude /home/*/backups

exclude /home/*/Maildir

exclude *.zip

exclude *.tar

exclude /home/*/domains/*/stats

exclude /home/*/domains/*/logs

exclude *cache*

exclude *tmp*

Natuurlijk kun je je eigen gewenste configuratie toepassen!

Test

Nu is het tijd om te testen of onze configuratie klopt. (tabs!!)

rsnapshot configtest

Als er Syntax OK uitkomt is alles goed! zoniet dan word de fout met lijn nummer aangegeven.

 SSH keys

Rsnapshot (rsync) maakt gebruik van SSH om in te loggen op de server. We gaan SSH Keys maken zodat rsnapshot zonder wachtwoorden kan inloggen.

ssh-keygen -t rsa

Dit creëert een public en een private key.

ssh-copy-id -i ~/.ssh/id_rsa.pub root@webserver1.com

ssh-copy-id -i ~/.ssh/id_rsa.pub root@webserver2.com

Als het goed kun je nu inloggen op je server zonder wachtwoord.

ssh root@webserver1.com

Cron

We gaan nu cron tijden instellen voor rsnapshot. Mijn cron file ziet er als volgt uit, hij draait elke dag om 23:50.

# 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

50 23 * * * /usr/bin/rsnapshot daily

# 0 3 * * 1 root /usr/bin/rsnapshot weekly

# 30 2 1 * * root /usr/bin/rsnapshot monthly

 

Laatste test

Nu is het tijd om de back-ups echt te gaan testen. Voer eerst rsnapshot -t hourly uit om een nep back-up uit te voeren zodat je kan zien wat er allemaal gebeurd en om te controleren of er geen errors/problemen ontstaan!

Wanneer alles goed is voer je rsnapshot daily uit. Nu gaat hij een echte back-up maken. Mochten er problemen verschijnen controleer dan de log file die we eerder hebben gemaakt.

Als de back-up klaar is ga je naar de map van de back-ups, in mijn geval /home/snapshots/

cd /home/snapshots/

ls -al

Nu hoor je een daily.0 mapje te zien. Dit staat voor “dagelijks back-up dag 0 (de eerste dag dus)”. Vervolgens ga je in dit mapje cd daily.0/ en voer je ls -al uit. Hier staan weer mapjes in met de servers waarvan je die dag een back-up hebt gemaakt. In mijn geval webserver1 & webserver2. Ga je in een van deze mapjes en voer je weer een ls -al uit dan zie je alle files waarvan een back-up is gemaakt.

Klaar! alles staat gereed en klaar om je data veilig te stellen.

Deel gauw met anderen:facebook Server backup met Rsnapshot in CentOS 6 nieuws twitter Server backup met Rsnapshot in CentOS 6 nieuws google Server backup met Rsnapshot in CentOS 6 nieuws pinterest Server backup met Rsnapshot in CentOS 6 nieuws linkedin Server backup met Rsnapshot in CentOS 6 nieuws stumbleupon Server backup met Rsnapshot in CentOS 6 nieuws print Server backup met Rsnapshot in CentOS 6 nieuws email Server backup met Rsnapshot in CentOS 6 nieuws

Opmerking toevoegen

Current day month ye@r *