Back-up maken met Duplicity | Deel II

Nu gaan we kijken naar het automatiseren van het maken van back-ups met Duplicity. Dit kan d.m.v. een heel simpel scriptje en crontab. Lets go!

Schrijven van een scriptje

NOTE: De stappen die hier worden beschreven, worden als de root gebruiker uitevoerd

Tijd om een scriptje te schrijven die het ons wat makkelijker maakt. Het wordt niks spannends, maar wel effectie.
First of all, ga naar /usr/local/bin/. Open hier met je favoriete teksteditor een nieuw bestandje genaamd "backup".
Vervolgens zetten we de magie in het bestandje:

#!/bin/bash

# Passphrase instellen zodat de back-up wordt versleuteld
export PASSPHRASE=helemoeilijkestring

# Back-up maken van de root dir
duplicity /etc file:///mnt/backup/

# Passphrase weer unsetten
unset PASSPHRASE  

Een paar zaken zullen je al wel bekend voorkomen, maar we gaan er toch nog even stap voor stap doorheen.

  • export PASSPHRASE=helemoeilijkestring een sleutel instellen voor de encryptie
  • duplicity /etc file:///mnt/backup/ hier maken we de daadwerkelijke back-up van /etc naar de mount /mnt/backup
  • unset PASSPHRASE hier verwijderen we weer de encryptie sleutel uit het systeem

So far lijkt het precies op wat we handmatig deden. Dat klopt! Wat we normaal handmatig doen, zal nu door het systeem worden gedaan d.m.v. het scriptje. De server zal de stappen van boven naar beneden afgaan om op die manier de back-up te maken.
Een aantal dingen die wellicht nieuw zijn:

  • #!/bin/bash hiermee vertellen we aan het systeem met welk programmatje we het script willen uitvoeren. Dit is niet verplicht, je mag het ook weglaten. Echter zul je dan wel een extensie aan het script moeten toevoegen (in ons geval zou het backup.sh worden) zodat het systeem weet wat voor soort script het is en hoe het uitgevoerd moet worden.
  • # Dit is een comment. Alles wat hier achter staat wordt niet uitgevoerd als onderdeel van het script.

Sla het bestand op en sluit het. Tijd om de rechten goed te zetten zodat ons backup scriptje ook uitgevoerd mag worden.
Aangezien ik het als root uitvoer, zal ik de rechten alleen voor root aanpassen: sudo chmod 770 backup.
Tijd om te testen! Voer het scriptje uit op de volgende manier: ./backup. Je zal nu iets zien als:

Local and Remote metadata are synchronized, no sync needed.  
Last full backup date: Wed Mar 15 10:25:08 2017  
--------------[ Backup Statistics ]--------------
StartTime 1489731087.84 (Fri Mar 17 06:11:27 2017)  
EndTime 1489731094.44 (Fri Mar 17 06:11:34 2017)  
ElapsedTime 6.61 (6.61 seconds)  
SourceFiles 18793  
SourceFileSize 157615819 (150 MB)  
NewFiles 0  
NewFileSize 0 (0 bytes)  
DeletedFiles 0  
ChangedFiles 0  
ChangedFileSize 0 (0 bytes)  
ChangedDeltaSize 0 (0 bytes)  
DeltaEntries 0  
RawDeltaSize 0 (0 bytes)  
TotalDestinationSizeChange 110 (110 bytes)  
Errors 0  

Het zal er wellicht iets anders uit zien als je het de eerste keer uitvoert. Dit komt omdat ik al een keer een back-up heb gedraaid, dus bij mij zal hij alleen maar de gewijzigde bestanden back-uppen.

Inplannen van het scriptje

Zo'n scriptje is handig, maar je hebt er nog vrij weinig aan als je het handmatig moet uitvoeren.
Tijd om te zorgen dat het systeem dit zélf kan aftrappen. Typ in crontab -e. Hiermee kom je in de takenplanner.
Dit ziet er wellicht wat verwarrend uit. Ik raad daarom aan om eens te kijken naar dit artikel.

Ons scriptje iedere nacht af te trappen om 12 uur, voegen we de volgende regel toe: 0 0 * * * /usr/local/bin/backup. Wil je hem liever in de nacht om 3 uur hebben lopen, verander dan de 2e 0: 0 3 * * * /usr/local/bin/backup. Liever om half 6 in de nacht? 30 5 * * * /usr/local/bin/backup.

NOTE: Hier ga ik ervan uit dat je boven aan het script #!/bin/bash hebt staan

Back-up loggen

Het is handig om na te kunnen gaan wat er gebeurt is als de back-up niet loopt.
Daarom gaan we ook nog wat logging inbouwen. Open opnieuw je back-up script en pas je script aan naar het volgende:

#!/bin/bash

# Passphrase instellen zodat de back-up wordt versleuteld
export PASSPHRASE=helemoeilijkestring

# Back-up maken van de root dir
duplicity /etc file:///mnt/backup/ > /root/back-up.log

# Passphrase weer unsetten
unset PASSPHRASE  

Zoals je kunt zien hebben we > /root/back-up.log toegevoegd. Dit zorgt ervoor dat de eerdere output nu wordt weggeschreven naar /root/back-up.log.

Conclusie

Dit is alleen een startpunt, vanaf hier kun je het script zo uitgebreid maken als je denkt nodig te hebben.
Mocht je hier geen behoefte aan hebben, dan zou dit al voldoende voor je moeten zijn.

Succes!