Uitvoeren van reguliere backups zou als één van de verantwoordelijkste top-prioriteiten van een systeembeheerder moeten worden aangemerkt. Ofschoon Linux een uitermate betrouwbaar besturingssysteem is, kunnen fouten voorkomen en ze zullen waarschijnlijk ook plaatsvinden. Ze kunnen worden veroorzaakt door een hardwarefout, stroomuitval, of door andere onvoorziene problemen.
Waarschijnlijker zullen het problemen zijn die door een menselijke fout zijn veroorzaakt, resulterend in ongewenste wijzigingen aan, of zelfs verwijderingen van kritieke bestanden. Als je andere gebruikers op je systeem host, zal je vrijwel zeker worden verzocht één of meer per ongeluk verwijderde bestanden terug te zetten.
Als je regelmatig backups maakt, bij voorkeur dagelijks (op z'n minst van de gebruikersbestanden die vaak worden bijgewerkt), zal je hopelijk de kans verminderen op, en het herstel vergroten van dergelijk bestandsverlies.
De veiligste methode om backups aan te maken is ze op aparte media op te nemen, zoals tapes, een verwijderbare drive, beschrijfbare CD, enz., en je backupsets dan in een lokatie apart van je Linux-systeem te bewaren. Soms kan dit niet praktisch zijn -- -- misschien heb je geen brandbeveiligde kluis waarin je de backuptapes op kunt bergen! Of misschien heb je in de eerste plaats geen toegang tot een dergelijk backupsysteem. Niettemin kunnen backups nog steeds worden uitgevoerd, ofschoon op een wat beperkte basis.
Op mijn werk voer ik op verscheidene Linux-servers backups uit. Afhankelijk van de situatie, worden een aantal van deze backupsets naar tapes weggeschreven, anderen worden naar een aparte server over het netwerk weggeschreven, terwijl weer anderen gewoon naar een aparte diskpartitie (bijvoorbeeld in het bestandssysteem ``/archive/'') door een automatische cron-job worden weggeschreven (misschien omdat de server op een lokatie op afstand staat, waarbij een dagelijks bezoek voor een tape backup niet praktisch of onmogelijk is).
Thuis heb ik geen extern backupsysteem, noch heb ik enorme hoeveelheden beschikbare diskruimte om een backup-image naar weg te schrijven. Daarom maak ik in plaats daarvan alleen een backup van mijn gebruikersbestanden in ``/home/'' en een aantal aangepaste configuratiebestanden in ``/etc/'', waarbij ik de backup naar een aparte diskpartitie wegschrijf.
Er zijn onder Linux diverse methoden voor het uitvoeren van backups. Hieronder bevinden zich commandoregel-tools die met iedere Linux-distributie worden meegeleverd, zoals ``dd'', ``dump'', ``cpio'', als ook ``tar''. Tevens zijn op tekst gebaseerde utilities beschikbaar, zoals ``Amanda'' en ``Taper'', die zijn ontworpen om een wat gebruikersvriendelijker interface aan de backup- en restore-procedures toe te voegen. Er zijn bovendien op GUI gebaseerde utilities, zoals ``KDat''. Als laatste zijn er ook nog commerciële backup-utilities beschikbaar, zoals ``BRU'' en ``PerfectBackup+''. Al deze backup-oplossingen kunnen voorzien in bescherming van je waardevolle gegevens.
Een beknopte opsomming van een aantal beschikbare tools, inclusief waar ze te krijgen zijn, is te vinden op de “Linux Applications and Utilities Page”, op http://www.xnet.com/~blatura/linapp2.html#back. Neem bij de beslissing over een backup-oplossing de volgende factoren in overweging:
Overdraagbaarheid - Is backup overdraagbaarheid (dwz. de mogelijkheid een backup te maken op de ene Linux distributie of implementatie van Unix en het herstellen ervan op een andere; bijvoorbeeld vanaf Solaris naar Red Hat Linux) belangrijk voor je? Als dat zo is, valt je keuze waarschijnlijk op één van de commandoregel-tools (bv. ``dd'', ``dump'', ``cpio'', of ``tar''), omdat je er dan redelijk zeker van kunt zijn dat dergelijke tools op ieder *nix systeem beschikbaar zullen zijn.
Onbeheerde of geautomatiseerde backups - Is de mogelijkheid om backups te automatiseren, zodat ze op reguliere tijden zonder menselijke tussenkomst kunnen worden uitgevoerd, belangrijk voor je? Als dat zo is, zal je een tool en een backupmedium uit moeten kiezen waarmee een dergelijk backupontwerp zal worden ondersteund.
Gebruikersvriendelijkheid - Is een gebruikersvriendelijke interface belangrijk voor je? Als dat zo is, zal je waarschijnlijk een tool uit willen kiezen die voorziet in een op tekst of GUI gebaseerde interface. De commerciële utilities leveren wellicht de eenvoudigste interfaces en tevens aanvullende technische ondersteuning.
Remote backups - Is de mogelijkheid om backups en restores vanaf een remote computer te starten belangrijk voor je? Als dit zo is, zal je waarschijnlijk één van de tools voor op de commandoregel of op tekst gebaseerde tools uit willen kiezen in plaats van de utilities gebaseerd op een GUI (tenzij je een redelijk snelle netwerkverbinding hebt en de mogelijkheid om remote X-sessies te draaien).
Netwerk backups - Is het uitvoeren van backups en het terugzetten ervan naar en vanuit netwerkhosts belangrijk voor je? Als dit zo is, zal je wellicht één van de verscheidene utilities voor op de commandoregel (zoals ``tar'') willen gebruiken, waarmee netwerktoegang tot backupdevices wordt ondersteund, of een gespecialiseerd utility zoals ``Amanda'' of één van de verscheidene commerciële utilities.
Media-typen - Backups kunnen op een diversiteit aan media, zoals tape, een extra harddisk, ZIP-drives, of herschrijfbare CD's worden opgeslagen. Neem hierbij de kosten vs. betrouwbaarheid, opslagcapaciteit en transportsnelheid in overweging.
![]() | Pas op: Neem bij het maken van je bestandssystemen niet het ``/proc'' pseudo-bestandssysteem mee! De bestanden in /proc zijn in feite geen bestanden maar gewoon op bestanden lijkende links die de datastructuren van de kernel beschrijven en er naar verwijzen. Het maken van een backup van een bestand als ``/proc/kcore'', wat in feite een pseudo-bestand is met je gehele geheugen als inhoud, lijkt op een tamelijk grote verspilling van de tape! :-) Wellicht dat je ook het maken van een backup van het bestandssysteem ``/mnt'' wilt voorkomen, tenzij je een speciale wens hebt een backup te maken van de bestanden op je CD-ROM, diskette, bestanden die via het netwerk worden gedeeld, of andere gemounte apparaten. |
Uiteraard zullen, afhankelijk van je keuze voor een backup-oplossing, de procedures voor het uitvoeren van een backup en het terugzetten anders zijn. In deze sectie zal ik echter methoden bespreken voor het uitvoeren van backups met de twee tools ik het meest gebruik: ``tar'' (waarvan de naam staat voor “Tape ARchiver”), een hulpmiddel voor op de commandoregel dat zeer overdraagbaar is tussen *nix systemen; als ook ``KDat'', een op GUI gebaseerd tape backup utility wat in de KDE-packages is opgenomen (zie de the section called KDE Installatie en Configuratie in Chapter 5 voor meer informatie over KDE).
Als laatste zou ik nog willen toevoegen dat zelfs als het hulpmiddel niet de ingebouwde mogelijkheid heeft om geautomatiseerde of onbeheerde backups te plannen, je afhankelijk van je backup oplossing, mogelijk door middel van de cron faciliteiten dergelijke backups kunt automatiseren. Zie de the section called Taken Automatiseren met Cron en Crontab bestanden in Chapter 9 voor details over het gebruik van cron en over het aanmaken van crontab-bestanden.
Als je besluit als oplossing voor je backup ``tar'' te gebruiken, zal je waarschijnlijk wat tijd uit moeten trekken om de diverse beschikbare commandoregel-opties te leren kennen; typ “man tar” voor een uitgebreide lijst. Je zal ook moeten weten hoe je de van toepassing zijnde backupmedia kunt benaderen; alhoewel alle devices in de wereld van Unix als bestanden worden behandeld, is de naam van het “bestand” de naam van het device zelf als je naar een character device zoals een tape schrijft (bv. ``/dev/nst0'' voor een op SCSI gebaseerde tape-drive).
Met het volgende commando zal van je gehele Linux-systeem een backup worden aangemaakt op het ``/archive/'' bestandssysteem, met uitzondering van het ``/proc/'' pseudo-bestandssysteem, alle gemounte bestandssystemen in ``/mnt/'', het ``/archive/'' bestandssysteem (het heeft geen zin een backup te maken van je backupsets!), als ook Squid's nogal grote cache-bestanden (die naar mijn mening een verspilling zijn van de backupmedia en waarvan het onnodig is een backup te maken):
tar -zcvpf /archive/full-backup-`date '+%d-%B-%Y'`.tar.gz \
--directory / --exclude=mnt --exclude=proc --exclude=var/spool/squid . |
Laat je niet intimideren door de lengte van dit commando! Als we het in componenten opbreken, zal je de pracht van dit krachtige utility inzien.
In het commando hierboven worden de opties ``z'' (comprimeer; de backupgegevens worden met ``gzip'' gecomprimeerd), ``c'' (create; er wordt een archiefbestand aangemaakt), ``v'' (verbose; toon een lijst met bestanden als er een backup van wordt gemaakt), ``p'' (behoud permissies; bestandsprotectie informatie zal worden “onthouden” dus kunnen ze worden teruggezet) opgegeven. De ``f'' (file) optie geeft aan dat het direct hieropvolgende argument de naam van het archiefbestand (of het device) zal zijn dat wordt beschreven. Merk op hoe een bestandsnaam met daarin de huidige datum wordt afgeleid, simpelweg door het ``date'' commando te omsluiten door twee aanhalingstekens openen te gebruiken. Een algemene naamconventie is om aan niet gecomprimeerde archieven het toevoegsel ``tar'' toe te voegen, en aan gecomprimeerde archieven het achtervoegsel ``tar.gz''.
Met de optie ``--directory'' wordt aan tar opgegeven dat het eerst naar de daaropvolgende directory moet gaan (in dit voorbeeld de ``/'' directory) voordat het de backup opstart. Met de ``--exclude'' opties wordt tar aangegeven zich niet bezig te houden met het maken van een backup van de opgegeven directory's of bestanden. Als laatste wordt door middel van de ``.'' aan tar opgegeven dat het van alles in de huidige directory een backup moet maken.
![]() | Noot: Het is belangrijk je te realiseren dat de opties aan tar hOoFdlEtTeRgEvOeLiG zijn! Bovendien kunnen de meeste opties óf als enkele mnemonische tekens (bv. ``f'') worden opgegeven, óf door hun makkelijker-te-onthouden volledige optienamen (bv. ``file''). De mnemonische representaties worden geïndentificeerd door ze te laten voorafgaan door een ``-'' teken, terwijl de volledige namen worden voorafgegaan door twee van dergelijke tekens. Nogmaals, zie de “man” pages voor informatie over het gebruik van tar. |
Een ander voorbeeld, waarbij ditmaal als volgt alleen de opgegeven bestandssystemen (als tegengestelde van ze allemaal weg te schrijven met uitzondering als in het voorbeeld hiervoor is gedemonstreerd) op een SCSI-tape worden weggeschreven:
tar -cvpf /dev/nst0 --label="Backupset aangemaakt op `date '+%d-%B-%Y'`." \
--directory / --exclude=var/spool/ etc home usr/local var/spool |
Merk op dat in dit voorbeeld de optie ``z'' (compress) niet wordt gebruikt. Ik raad je sterk af gecomprimeerde gegevens naar tape weg te schrijven, omdat je je volledige backupset verliest als een deel van de tape beschadigd raakt. Van archiefbestanden die zonder compressie zijn opgeslagen, kunnen niet aangetaste bestanden altijd worden teruggezet, zelfs als delen van het tape-archief beschadigd zijn.
Omdat de tape-drive een character-device is, is het niet mogelijk een echte bestandsnaam te specificeren. Daarom is het argument aan tar gewoon de naam van het device, ``/dev/nst0'', het eerste tape-device op de SCSI-bus.
![]() | Noot: Het ``/dev/nst0'' device spoelt nadat de backupset is weggeschreven niet terug; daardoor is het mogelijk meerdere sets op één tape weg te schrijven. (Je mag ook naar het device refereren als ``/dev/st0'', in welk geval de tape automatisch nadat de backupset is weggeschreven wordt teruggespoeld). |
Aangezien we niet de mogelijkheid hebben om een bestandsnaam voor de backupset op te geven, kan de optie ``--label'' worden gebruikt om wat informatie over de backupset in het archiefbestand zelf te schrijven.
Tenslotte worden alleen de bestanden in de directory's ``/etc/'', ``/home/'', ``/usr/local'', en ``/var/spool/'' (met uitzondering van Squid's cache databestanden) naar de tape weggeschreven.
Bij het werken met types, kun je de volgende commando's gebruiken voor het terugspoelen, en vervolgens je tape uit te laten werpen:
mt -f /dev/nst0 rewind mt -f /dev/nst0 offline |
![]() | Tip: Je zal bemerken dat de voorafgaande ``/'' (slash) tekens door tar worden verwijderd wanneer een archiefbestand wordt aangemaakt. Dit is tar's standaardwerking, en het is bedoeld je te behoeden voor het overschrijven van kritieke bestanden door oudere versies van die bestanden, mocht je per ongeluk de verkeerde bestanden in een herstelbewerking terugzetten. Als je dit gedrag echt niet prettig vindt, (denk er aan, het is een mogelijkheid!) dan kun je de optie ``--absolute-paths'' aan tar opgeven, waarbij de voorafgaande slashes behouden zullen blijven. Ik raad je dit echter niet aan, aangezien het Gevaarlijk is! |
Als je de KDE-desktopomgeving gebruikt, geloof ik dat je het utility ``KDat'' zowel krachtig als ook gebruikersvriendelijk zal vinden. Bovendien is een toegevoegde bonus dat KDAT als backupmotor gebruik maakt van ``tar''. Daarom kunnen backupsets die met KDat zijn weggeschreven, niet alleen met KDat worden gelezen maar ook met tar! Dit maakt KDat een zeer fraaie keuze in zowel gebruikersvriendelijkheid als backupoverdraagbaarheid.
![]() | Tip: Zelfs als je er voor kiest het volledige KDE-package niet te gebruiken of installeren, dan kun je KDAT nog steeds gebruiken, zolang je de Qt-library's dan maar hebt geïnstalleerd. |
De eerste keer dat je het programma KDat opstart, zal je een backupprofiel aan moeten maken. Met een dergelijk profiel geef je KDat op van welke bestanden op je systeem je een backup zou willen maken. Als je dat wilt, kun je afhankelijk van je behoeften, meer dan één profiel samenstellen, (je zou bijvoorbeeld een profiel samen kunen stellen met de naam “Volledige Backup” voor een volledige systeembackup, en “Snelle Backup” voor een backup van alleen de gebruikersbestanden).
Voor het aanmaken van een backupprofiel, kies je óf voor “Create Backup Profile” vanuit de optie “File” op de menubalk (of klik je met de rechtermuisknop op de folder “Backup Profiles”, en kies je vervolgens voor “Create Backup Profile”). Aan de rechterkant van het KDat venster, kun je diverse instellingen wijzigen, zoals de naam van het profiel, de naam van het archief, de tar-opties als ook andere opties. Klik op het menu “Help” voor meer informatie over waar deze instellingen voor zijn.
Om aan te geven welke bestanden in je backupprofiel zouden moeten worden opgenomen, klik je met de linkermuisknop op het aankruisvakje naast de ``/'' directory-folder. Hiermee zullen alle bestanden in en onder deze directory voor backups worden geselecteerd. Klik dan op het kleine ``+'' teken naast de folder. Hiermee zal de folder worden geëxtraheerd, waarbij de daarin en daaronder bevindende lijst met bestanden wordt getoond. Hierdoor krijg je de mogelijkheid alle bestanden waarvan je geen backup wenst te maken uit te sluiten; klik gewoon met de linkermuisknop op het aankruisvakje naast ieder bestand of iedere directory dat je uit wilt sluiten. Voor bijvoorbeeld een volledige backup zou ieder aankruisvakje voor het bestand of de directory zijn gemarkeerd, met uitzondering van ``/proc'' (een pseudo-bestandssysteem met informatie over je draaiende systeem), ``/mnt'' (een directory waaronder CD-ROM drives, diskettes en gedeelde netwerkbronnen gewoonlijk zijn gemount) en als je een Squid-gebruiker bent ``/var/spool/squid'' (Squid's cache data-bestanden). Zodra je de van toepassing zijnde bestanden hebt geselecteerd, klik je met de linkermuisknop op het backupprofiel dat je aan het maken bent, klik vervolgens op de knop “Files >>” om de lijst met geselecteerde bestanden naar je backupprofiel te verplaatsen.
![]() | Noot: Mocht de serverdata groter zijn dan wat fysiek op een tape kan worden opgeslagen, dan zal je aparte backupprofielen aan moeten maken, één voor ieder deel van je backupset. |
Voor het daadwerkelijk uitvoeren van de backup, voeg je een tape in de drive, en kies je voor “Mount Tape” vanuit het “File” menu (of klik je met de linkermuisknop op het ikoon dat op een tape lijkt). Hierdoor zal de tape worden “gemount” (eigenlijk is het niet echt mogelijk het te mounten omdat een tape-device een character-device is -- wat KDat in werkelijkheid doet is dat het eerst de tape terugspoelt, dan de header-informatie probeert in te lezen, en als het daarin slaagt, de corresponderende tape-index op je harddisk opzoekt. Anders zal KDat je melden de tape te formatteren.
![]() | (Noot: Als KDat aan blijft geven dat er zich geen tape in de drive bevindt en het wel degelijk in de drive aanwezig is, dan zou je na moeten kijken of de naam van het tape-device in de voorkeuren correct is aangegeven; klik met de linkermuisknop op de optie “Edit” op de menubalk en kies voor “User Preferences”.) |
Zodra KDat de tape heeft gemount, moet je eerst het backupprofiel, dat je voor de backup wenst te gebruiken, uitkiezen voordat je de backup opstart. Klik voor het starten van de backup met de rechtermuisknop op het gewenste backupprofiel en klik dan met de linkermuisknop op de optie “Backup”. KDat zal eerst een dialoogvenster weergeven met de details van het door jou geselecteerde backupprofiel, klik met de linkermuisknop op de knop “Ok” om de backup te starten.
Onderwijl de backup in bewerking is, zal KDat een dialoogvenster weergeven met diverse statische informatie (geschatte tijd, backupgrootte, backupsnelheid, resterende geschatte tijd, als ook het aantal bestanden en totaal weggeschreven bytes), en een lijst met bestanden tonen als er een backup van is gemaakt. Een volledige backup bestaande uit verscheidene gigabytes aan gegevens kan verscheidene uren duren voor het klaar is. Als je dat nodig vindt, kun je op ieder ogenblik met de linkermuisknop op de knop “Abort” klikken om het backupproces te onderbreken.
Zodra de backup klaar is, kun je de tape unmounten door vanuit de menubalk te kiezen voor “Edit”, en vervolgens “Unmount Tape”, of met de linkermuisknop op de ikoon van de tape te klikken, waarmee de tape zal worden teruggespoeld er eruit zal worden geworpen.