Debian server beheer

Backup: automatisch essentiële bestanden van je server kopieren

Ik heb thuis een Mac Mini als fileserver draaien en die heb ik zo ingericht dat hij iedere dag de essentiële bestanden van mijn Debian server naar huis kopieert. De fileserver bij mij thuis heeft weer een local backup (Time machine) en een remote backup (Backblaze). Zo onstaan er dus van alle belangrijke bestanden 4 kopieën. De onderstaande instructies zijn deels specifiek voor de Mac maar zouden ook op Linux machines moeten werken.

'Sleutel' maken

Eerst moeten we er voor zorgen dat de computer die de backup op gaat halen een ssh verbinding kan maken zonder en wachtwoord in te hoeven geven. Dat is nodig om de backup te automatiseren. In de Mac op de terminal doe je:

ssh-keygen -t rsa

Voor de bestandsnaam kies je de default die gegeven wordt. Voer géén passphrase in. Uiteindelijk zijn de twee sleutels klaar en zegt de Mac:

Your identification has been saved in /Users/admin/.ssh/id_rsa. Your public key has been saved in /Users/admin/.ssh/id_rsa.pub.

Het bestand id_rsa.pub moeten we kopiëren naar de Debian server. Ga naar de thuismap van de gebruiker die in moet gaan loggen en bewerk het bestand authorized_keys:

nano /home/[gebruiker]/.ssh/authorized_keys

Het kan zijn dat dit bestand al bestaat. Zo niet dan moet je het aanmaken. Voeg de inhoud van id_rsa.pub toe aan authorized_keys. Vervolgens moet je nog de rechten op het bestand aanpassen:

chmod 700 /home/[gebruiker]/.ssh/authorized_keys

Als het gelukt is kun je nu vanaf de computer die de backup op gaat halen een ssh verbinding maken zonder in te loggen. Test dat. En nogmaals, ik heb bovenstaande uitgevoerd onder Mac OS X maar het zou probleemloos moeten werken op een Linux machine.

rsync

Als er nog geen rsync op je Debian server staat moet je dat nog installeren:

apt-get install rsync

Nu zijn we zover dat we rsync kunnen testen vanaf de Mac Mini:

rsync --delete -ave ssh [gebruiker]@[jouwdomein.nl]:'/home' /pad/home

Let op dat de lokale map wel moet bestaan. Anders steigert rsync. Als je de eerste keer veel data moet kopiëren kan dat lang duren. Bij elke volgende opdracht gaat het sneller, rsync kopieert dan alleen de bestanden die gewijzigd zijn. De --delete optie zorgt er voor dat bestanden die op de Debian server verwijderd zijn ook verwijderd worden uit de backup. Je moet even overwegen of je dat wilt. Omdat er van mijn lokale mappen meerdere backups zijn die ook oude versies van bestanden bewaren vind ik dat geen probleem.

Wil je er graag een logfile bij hebben dan kun je de opdracht zo geven:

rsync --delete --log-file="rsync.log" -ave ssh [naam]@[server]:'/home' /pad/home

Uiteraard kun je bij --log-file ook een map opgeven.

Wat mee te nemen in de backup?

Als je schijfruimte zat hebt kun je overwegen alles mee te nemen in de backup. Een paar zaken die in ieder geval belangrijk zijn:

/homeHier staat de mail van je gebruikers. Een backup vinden ze vast fijn.
/srv/wwwHier heb ik alle websites staan.
/var/lib/mysqlMysql databases
/etcHier staan de meeste instellingen

Controleer wel of deze locaties in jouw systeem hetzelfde zijn.

De backup automatiseren

Idealiter wil je de backup automatiseren. Op de Mac kun je meerdere opdrachten aan rsync verzamelen in een shell script. Begin je script met:

#!/bin/bash

En plak daarachter één of meer opdrachten aan rsync. Vervolgens wil je het script automatisch uit laten voeren. Op de Mac gaat dat het beste met launchdemon. Ik gebruik Lingon 3 om opdrachten aan launchdemon te geven.Het je een Linux machine dan kun je cron gebruiken om met enige regelmaat een backup te maken.

Je hebt nu een automatische backup van je server.