Hoofdstuk 10. Backups

Inhoudsopgave

De voorbereiding
Waarom backups?
De data bundelen
Comprimeren met gzip en bzip2
Java archieven
De data transporteren
Randapparaten voor backup
Een backup maken op CD
Een backup maken op een USB stick
Het gebruik van rsync
Encryptie
Waarom versleutelen
Een sleutel aanmaken
Over je sleutel
Data versleutelen
Data ontcijferen
Samenvatting

Samenvatting

Nu je weet hoe je heel je systeem kan aanpassen, is het hoog tijd om te leren hoe je je eigen veranderingen kan opslaan. We bespreken onder andere volgende onderwerpen:

  • Aanmaken van archieven.

  • Bestanden comprimeren.

  • Schijfruimte en grootte van bestanden bepalen.

  • Backups op CD.

  • Backups op uitneembare apparaten zoals USB sticks.

  • Encryptie van data.

We zullen ook de standaard backupprogramma's bespreken die bij de Ubuntu distributie meegeleverd worden.

De voorbereiding

Waarom backups?

Hoewel Linux een heel stabiel en robuust systeem is, zullen er vroeg of laat ongelukjes gebeuren. Die hebben dan meestal niets te maken met de software, maar dat wil nog niet zeggen dat de hardware niet kan falen. Tenslotte draait Linux meestal op PC architectuur, dus zal er ooit wel eens een harde schijf stukgaan, de stroom kan uitvallen net terwijl je iets belangrijks aan het doen was, je kinderen thuis of de schoonmaakploeg op het werk zijn al eens minder voorzichtig, enzovoorts.

Daarnaast hou je best ook rekening met het feit dat je zelf niet onfeilbaar bent. Hoe beter je je systeem leert kennen, hoe meer rechten je verwerft, hoe meer je rondkijkt en in contact kan komen met data die echt belangrijk zijn voor het systeem. Om maar te zwijgen van je eigen data, waarmee je alle dagen werkt en die dus nog veel meer vatbaar is voor ongevallen.

Bovendien weet je maar nooit dat er eens een upgrade misloopt, of dat je naar een andere distributie wil switchen, of dat je je data op een andere computer wilt kunnen gebruiken. Om al deze redenen is het nodig om een extra kopie te hebben van alles wat je lief is.

De data bundelen

Archiveren met tar

In de meeste gevallen zullen we eerst een archief maken dat alle bestanden bevat die we willen opslaan. Zo hebben we slechts één enkel bestand te manipuleren, wat het werk makkelijker maakt.

Op UNIX en Linux systemen gebruikt men voor het aanmaken van een archief doorgaans het commando tar. Het staat voor “tape archiver” en werd oorspronkelijk gebruikt om naar tapes te schrijven. Vandaag de dag vind je echter niet zoveel tapes meer, omdat backups op harde schijven, CD's, DVD's en USB veel goedkoper geworden zijn. Het tar blijft echter veelgebruikt om de voorbereidende werken uit te voeren.

Het tar commando heeft vele opties, de meest voorkomende zijn:

  • -v: visueel: er is output te zien op het scherm. Zonder deze optie doet tar wel wat je vraagt, maar je ziet er niets van.

  • -t: test: toon wat er zou gebeuren als je een bepaald tar commando met bepaalde opties zou ingeven.

  • -x: extract: uitpakken.

  • -c: creëer.

  • -f: filename: bestands- of apparaatnaam.

  • -j: filter door bzip2, zie de paragraaf “Comprimeren met gzip en bzip2”.

Het min-teken voor de optie wordt vaak weggelaten, ook dit is een overblijfsel uit vroeger tijden.

Omdat tar niet comprimeert, maar enkel bestanden aan elkaar hangt in één groot bestand, heb je op het bestandssysteem waar je het archief wilt achterlaten, zoveel plaats nodig als de grootte van alle bestanden samen, die je in het archief wilt steken.

Het eenvoudigste is om een archief te maken van een map. Op die manier zal er ook een map met dezelfde naam aangemaakt worden wanneer je het archief weer uitpakt. Als je niet van een map, maar van losse bestanden een archief maakt, zullen die losse bestanden bij het uitpakken in de map komen te staan, waarin je het archief ontmantelt. Het is dan vaak moeilijk om het onderscheid te maken tussen bestanden die al in die map stonden, en bestanden die bij het archief hoorden.

Berekeningen met df en du

Er zijn vele manieren om een archief aan te maken. Het meest gebruikt is echter wellicht de syntax

tar cvf archief.tar mapnaam/

Alvorens te beginnen, kijk je echter best altijd even na of er wel genoeg plaats is op je bestandssysteem.

Een voorbeeld: Willy maakt een backup van zijn home map. Eerst kijkt hij met behulp van het df commando of er voldoende plaats is om het archief aan te maken:

willy@ubuntu:~$ df -h .
Bestandssysteem		Grtte	Gebr	Besch	Geb%	Aankoppeling
/dev/sda1		7,6G	3,0G	4,3G	41%	/

Met andere woorden:

  • df staat voor disk full, het geeft aan hoeveel plaats er nog is op een bestandssysteem.

  • We geven met df de optie -h mee, voor “humanly readable”.

  • We geven als argument “.” mee, het bestandssysteem waarop de huidige map zich bevindt.

  • Er is nog 4,3 GB beschikbaar op dit bestandssysteem.

Lees meer in man df.

Nu moeten we ook nog weten hoe groot de map is die we willen archiveren. Dit doe je met het du commando, van disk usage:

willy@ubuntu:~$ du -sh .
104M	.
[Belangrijk]Documentatie lezen

Vergeet niet de man pagina's van df en du te lezen!

We hebben dus 4,3 Gigabyte beschikbaar, en we hebben 104 Megabyte nodig. We mogen bijgevolg aan het aanmaken van het archief beginnen.

Een archief creëren

Maak als volgt een archief van je home map:

willy@ubuntu:~$ cd ..
willy@ubuntu:/home$ tar cvf /var/tmp/home-willy-20060731.tar willy/

We zien het volgende:

  • Eerst gaan we naar de /home map.

  • c-optie: creëer het archief.

  • v-optie: visueel, de output werd weggelaten in bovenstaand voorbeeld, omdat een hele lange lijst van alle bestanden in alle mappen van je home map over het scherm rolt.

  • f-optie: bestandsnaam volgt dadelijk na deze optie. We kiezen een duidelijke naam.

  • De map die gearchiveerd wordt, is willy. Later bij het uitpakken zal dan ook een map willy aangemaakt worden.

We maken een archief van de map willy in bovenstaand voorbeeld. We hadden ook tar cvf /var/tmp/willy.tar . kunnen opgeven terwijl we in de home map waren, maar dat is niet zo handig als je daarna het archief wilt uitpakken. Je kan dadelijk uitproberen wat het verschil tussen de twee opdrachten is.

[Let op]Orde en netheid

Maak voor het aanmaken van een archief van je home map eerst de vuilbak leeg. Archieven zijn meestal tijdelijke bestanden. Maak ze aan in een andere map dan de map die je archiveert, bijvoorbeeld in /var/tmp. Noteer: deze map kan op een andere partitie (schijfdeel) gelegen zijn. Controleer met het commando df -h /var/tmp of er voldoende plaats is.

[Belangrijk]De configuratiebestanden

De configuratiebestanden van je systeem staan in de /etc map. Maak er een archief van. Controleer of je voldoende schijfruimte hebt. Zie je foutmeldingen omdat je geen toegang hebt tot bepaalde bestanden? Gebruik dan sudo.

[Opmerking]Partities

In de man pages zal je wellicht verwijzingen vinden naar het Engelse partition, dat in het Nederlands wel eens als “partitie” vertaald wordt. Hiermee bedoelt men een bestandssysteem op een (deel van een) harde schijf of ander medium. Op ons systeem hebben we standaard slechts één enkele grote partitie voor het hoofdbestandssysteem of de root partitie, dit wordt aangeduid met de schuine streep (/). Meestal hebben Linuxsystemen meerdere bestandssystemen. Het hoofdbestandssysteem wordt ook wel eens aangeduid met de root (niet te verwarren met root, het account van de systeembeheerder) of de slash.

Het bestandssysteem in het voorbeeld is /dev/sda1, de eerste partitie op de eerste SCSI schijf. Je kan ook IDE schijven hebben, die worden aangeduid met /dev/hd[a-z]N. De eerste partitie op de eerste IDE schijf zou dan dev/hda1 zijn. SCSI schijven zijn betrouwbaarder, maar duurder.

Een archief uitpakken

Ga eerst in de map waar het archief zich bevindt. Een archief kan je bijvoorbeeld ook afgehaald hebben van het Internet. Als voorbeeld nemen we het archief dat we net zelf aangemaakt hebben. We controleren eerst of er voldoende plaats is.

willy@ubuntu:~$ cd /var/tmp
willy@ubuntu:/var/tmp$ df -h .
Bestandssysteem		Grtte	Gebr	Besch	Geb%	Aankoppeling
/dev/sda1		7,6G	3,1G	4,1G	44%	/
willy@ubuntu:/var/tmp$ ls -lh home-willy-20060731.tar
-rw-r--r-- 1 willy willy 95M 20060731 06:15 home-willy-20060731.tar
willy@ubuntu:/var/tmp$ tar xvf home-willy-20060731.tar

We lieten weer de output weg uit het voorbeeld. Door het archief uit te pakken, met de x optie, werd een map willy aangemaakt in /var/tmp.

[Opmerking]Grootte van het archief

Zoals je kan merken, is de grootte van het archief iets kleiner dan wat door het du commando voorspeld werd. Dit komt omdat tar, hoewel het niet comprimeert, toch onnodige zogenaamde blancs, series van nulletjes in de binaire voorstelling van bestanden, verwijdert. Praktisch mag je er echter van uitgaan dat de grootte van het archief meestal wel min of meer zal overeenkomen met de totale grootte van de originele bestanden.

[Tip]Grafisch uitpakken

In de paragraaf “Firefox” tonen we hoe je een archief via de grafische interface kan uitpakken.

Een archief testen

Als je wilt weten of een bepaald archief een bestand bevat, kan je het volgende proberen:

tar tvf archief.tar | grep gezocht_bestand

Bijvoorbeeld:

willy@ubuntu:~$ tar tvf home-willy-20060731.tar | grep geheugen.sh
-rwxr--r-- willy/willy	121	2006-07-25 01:37:13 willy/geheugen.sh
[Opmerking]Het echte werk

Het tar commando is OK als je een map wilt archiveren. Als je echter meerdere mappen of hele disken wilt archiveren, wordt het al snel minder handig. We bespreken straks rsync, dat bijvoorbeeld makkelijk toelaat om incrementele backups te nemen (enkel de bestanden archiveren die veranderd zijn sedert de vorige keer dat er een backup genomen werd).

Standaard biedt Linux geen weerwerk tegen de grote commerciële en professionele oplossingen voor backups, hoewel er van die programma's wel betaalversies voor Linux bestaan, zodat je Linux machine compatibel is met de bedrijfsomgeving. Als gewone gebruiker heb je echter aan de standaard gereedschappen meer dan genoeg.

Comprimeren met gzip en bzip2

Comprimeren

De voornaamste reden om bestanden te comprimeren is om plaats te besparen. Bestanden die je niet vaak nodig hebt, bijvoorbeeld de man pagina's, worden in gecomprimeerde vorm bewaard. Op het moment dat je ze nodig hebt, worden ze gedecomprimeerd door het man commando.

Maar ook om bandbreedte te besparen, worden bestanden samengedrukt. Het gaat veel sneller om een gecomprimeerd archief over het netwerk te sturen om het op te slaan op een andere machine.

Bestandsnamen die eindigen op .tar.gz of .tar.bz2 komen bijzonder vaak voor als het gaat over software pakketten die je van het Internet kan afhalen - zie bijvoorbeeld de paragraaf “Firefox”. De suffix duidt aan dat het een gecomprimeerd archief betreft. Het is niet absoluut nodig om suffixen te gebruiken, maar zoals reeds gezegd maken ze je leven wel makkelijker. De commando's gzip, de vrije versie van zip en bzip2, de verbeterde versie met een nog sterker compressiealgoritme, voegen trouwens zelf suffixen toe. De syntax is eenvoudig:

gzip bestand[en]

bzip2 bestand[en]

[Belangrijk]gzip en bzip2 gebruiken

Probeer de commando's gzip en bzip2 uit op een aantal willekeurige bestanden.

Decomprimeren

Het decomprimeren gebeurt met gunzip respectievelijk bunzip2, met de bestandsnaam of -namen als argument:

gunzip bestand[en].gz

bunzip2 bestand[en].bz2

[Opmerking]Geen origineel

Merk op dat gzip en bzip2, in tegenstelling tot tar, geen originele bestanden op de harde schijf laten staan. Ook wanneer je gunzip of bunzip2 gebruikt, wordt het gecomprimeerde bestand verwijderd en blijft enkel het gedecomprimeerde bestand over. Uiteraard moet je wel, tot de aktie voltooid is, voldoende plaats op je bestandssysteem hebben. Nadat de aktie voltooid is, heb je echter meer speling dan met tar.

[Tip]Combineer tar en gzip

Omdat .tar.gz bestanden zo vaak voorkomen, is er in tar de -z om ze in één beweging uit te pakken:

tar zxvf bestand.tar.gz

[Belangrijk]gunzip en bunzip2 gebruiken

Probeer de bestanden die je zonet gecomprimeerd hebt, nu weer te decomprimeren.

Grafisch

Ubuntu heeft een grafische interface om .tar.gz archieven aan te maken. Ga via Locaties naar de map waarin zich de bestanden vinden waarvan je een archief wilt maken.

Handeling met de muis.

In de bestandsbeheerder selekteer je de bestanden en je kiest BewerkenArchief aanmaken. Je kan nu de naam en de locatie van het archief opgeven. Ook hier geldt natuurlijk dat er voldoende plaats moet zijn op het bestandssysteem.

Figuur 10.1. Archieven aanmaken met de bestandsbeheerder

Archieven aanmaken met de bestandsbeheerder.

[Tip]Alles selecteren

Wil je alle bestanden in een map archiveren, kies dan BewerkenAlles selecteren. Op die manier hoef je niet elk bestand afzonderlijk aan te klikken.

Geef het archief een naam en een plaats. Verifieer eerst dat er genoeg plek is op het schijfdeel waar je het archief wilt opslaan. Geef een zinvolle naam op, bijvoorbeeld een naam die een datumstempel bevat. Klik daarna Maak.

Figuur 10.2. Grafisch archief aanmaken

Geef naam en plaats op.

Gedurende het archiveren verschijnt er een voortgangsindicator, als die verdwenen is, staat het archief op de door jou gekozen plaats.

Comprimeren met zip

Voor compatibiliteit met MS Windows leveren sommige distributies, zoals Ubuntu, het zip programma mee. Dit pakket is niet standaard op alle Linux distributies aanwezig, maar kan wel toegevoegd worden mocht het niet aanwezig zijn. Een voorbeeld van gebruik:

willy@ubuntu:/var/tmp$ zip home-willy-20060731.zip home-willy-20060731.tar

Om te decomprimeren is er unzip.

Java archieven

Het Java pakket levert het jar commando aan om Java archieven aan te maken. Het is een Java toepassing die verschillende bestanden in een .jar archief samenvoegt. Hoewel de syntax overeenstemt met die van het tar commando, gaat jar standaard wel comprimeren.

[Let op]Symbolische links

Standaard volgt tar geen symbolische link. Het commando archiveert de link en niet het bronbestand. Het jar volgt wel de link en in het archief zullen dus alle bestanden zitten waar de link naar verwijst. Zo kan men makkelijk Java programma's in pakketvorm gieten, maar deze eigenschap zorgt er wel voor dat .jar archieven (onverwacht) groter kunnen zijn dan .tar archieven van ogenschijnlijk dezelfde bestanden.

[Belangrijk]Vergelijking

Om het compressievermogen te vergelijken, maak je eerst een tar archief van je home map. Haal het archief afwisselend door gzip, bzip2, zip en jar. Rangschik de verkregen bestanden op grootte. Welk programma comprimeert het best? Let wel: het archief moet een 100-tal MB groot zijn om de verschillen duidelijk te merken. Als de archieven te klein zijn, kan het lijken dat ze door te comprimeren juist vergroten in plaats van verkleinen, omdat de compressiegereedschappen bepaalde informatie voor het decomprimeren toevoegen aan het gecomprimeerde bestand.

De data transporteren

Een eenvoudige manier om backups te bewaren, is een kopie te maken van de data op een andere machine. We bespreken manieren om bestanden over het netwerk te transporteren in het volgende hoofdstuk. In dit hoofdstuk behandelen we enkel de lokale randapparatuur van de computer.