In Aanbouw: Dit artikel is nog in aanbouw. Meer info... |
Deze pagina staat in de ontwerpdocumentatie. De inhoud in bijgevolg nog niet klaar om in de officiële documentatie geïntegreerd te worden en kan fouten bevatten. Indien u fouten opmerkt mag u ze zeker verbeteren.
Backuppen met rsnapshot: een teletijdmachine voor Ubuntu
Geschikt voor: Versie: 8.04 LTS, 8.10
Iedereen weet het, maar weinigen doen het ook: backuppen. Het is nochtans een essentieel onderdeel van computeren. Het beschermt uw dierbare bestanden tegen kapotte harde schijven of die ene spatie of asterisk te veel of te weinig in een rm commando.
In dit artikel wordt rsnapshot uit de doeken gedaan: een roterend en incrementeel backup programma. 'Roterend' houdt in dat er vooraf ingesteld wordt hoeveel backups (of snapshots) er opgeslagen worden en dat er over dit aantal geroteerd wordt (de oudste wordt verwijderd indien er een nieuwe wordt aangemaakt). 'Incrementeel' betekent dat enkel de eerste backup volledig wordt overgezet, nadien enkel de verschillen met de voorgaande.
Rsnapshot is een set Perl-scripts rondom rsync en basis GNU programma's als rm, cp en touch. De rsync basis biedt ontelbare mogelijkheden en toepassingen, we zullen ons hier beperken tot het backuppen van een Ubuntu computer naar een externe harde schijf met het ext3 bestandssysteem.
Dat laatste is niet onbelangrijk, want rsnapshot maakt slim gebruik van de 'hard link' functionaliteit van moderne UNIX bestandssystemen. Men lijkt elke keer een volledige backup te bekomen terwijl het in feite een incrementele is waarbij de ongewijzigde bestanden verwijzen naar dezelfde bestanden uit de vorige backup. De incrementaliteit is dus volledig transparant weggewerkt: dit biedt de eenvoud van meerdere volledige backups, terwijl toch slechts de ruimte van één backup en de wijzigingen benodigd is.
Aan de slag
U begint met het installeren van rsnapshot, bijvoorbeeld zo:
sudo apt-get install rsnapshot
Er verschijnt een configuratiebestand rsnapshot.conf in de /etc map. Open dat met root rechten, dat kan bijvoorbeeld door in het venster dat u verkrijgt met Alt+F2 het volgende in te tikken: gksudo gedit /etc/rsnapshot.conf
In dit configuratiebestand kan de werking van rsnapshot geregeld worden, we overlopen de mogelijkheden en de ideale instellingen.
Belangrijk. Tussen een optie en zijn waarde hoort een tab, geen spaties. U moet het pad naar een map ook steeds afsluiten met een /, dus /media/disk/ is goed, /media/disk is fout.
Regel |
Optie |
Ideale waarde |
Verklaring |
27 |
snapshot_root |
/media/<label> |
De snapshot_root is de map waar alle backups terechtkomen. U geeft uw externe harde schijf best eerst een label zodat ze steeds op dezelfde plaats aangekoppeld wordt. De snapshot_root wordt dan /media/label/ |
33 |
no_create_root |
1 |
Haal het commentaarteken (#) weg voor de no_create_root optie, en verzeker u ervan dat ze op 1 staat. Dit zorgt ervoor dat de vorige locatie niet wordt aangemaakt als ze niet bestaat. Concreet betekent dat dat backups niet op uw lokale schijf terechtkomen als het externe medium niet is aangesloten. |
102 |
interval |
n.v.t. |
Laat alles zoals het is tot u de interval optie bereikt. U weet ondertussen dat rsnapshot een roterend systeem hanteert: de oudste backup wordt verwijderd als u een nieuwe backup maakt wanneer het maximum aantal is bereikt. Dit maximum aantal kan u hier instellen. Rsnapshot's rotatiesysteem kan evenwel meerdere lagen hebben, bijvoorbeeld 4 weekly's en 6 monthly's; in dat geval wordt bij een monthly backup de oudste weekly gekopieerd naar de nieuwste monthly. U hebt dus backups van de laatste zes maanden waarvan in de laatste vier weken één per week, daarna één per maand. Hoewel u de namen van de niveaus vrij kan kiezen (en deze dus geen rechtstreeks verband houden met de frequentie waarmee de backup uitgevoerd wordt) is het voor de overzichtelijkheid wel aan te raden om u hieraan te houden. |
140 |
rsync_short_args |
-av |
Stel de rsync_short_args optie in op -av, zo worden onder andere de rechten van de bestanden bewaard en het toont de voortgang van het proces op het scherm. |
166 |
exclude |
.gvfs |
Voeg een exclude optie toe voor .gvfs. Rsync heeft problemen met het kopiëren van deze map (die onder meer gebruikt wordt bij het benaderen van servers) waardoor verdwenen bestanden niet van de backup verwijderd worden en uw backup dus zou blijven groeien. |
204 |
backup |
n.v.t. |
Tot slot moet u in de backup optie opgeven wat u allemaal wil backuppen. Dit is uiteraard een persoonlijke keuze maar /home/, /etc/ en /var/log/ zijn meestal voldoende. In /home worden alle documenten en instellingen van gebruikers bewaard, in /etc alle systeeminstellingen. In /var/log worden de logs van uw computer gestockeerd. Als u websites serveert met uw computer is het interessant om ook deze te backuppen; standaard staan ze in /var/www/. |
Even doordenken
Aangezien het hier gaat om het veiligstellen van uw persoonlijke gegevens is het niet onbelangrijk dat u weet waar u mee bezig bent. Daarom even een uitgewerkt voorbeeld opdat rsnapshot voor u de status van black box kan verlaten.
Bij de eerste backup wordt er in de snapshot_root een map 'weekly.0' aangemaakt met daarin een map 'localhost' (u kan meerdere machines backuppen via ssh). Vervolgens wordt voor elke backup locatie (bijvoorbeeld /home/, /etc/ en /var/log/) rsync opgeroepen die deze locaties synchroniseert met de zojuist aangemaakte map. Deze map is nog leeg, dus alles wordt gekopieerd. Na de synchronisatie wordt de weekly.0 map nog even aangeraakt met touch zodat de wijzigingsdatum overeenstemt met het einde van de backup.
Vanaf de tweede backup wordt er geroteerd: in dit geval wordt eerst weekly.0 naar weekly.1 gekopieerd, men bekomt dus twee identieke mappen. Merk op dat dit door het gebruik van hardlinks geen extra ruimte kost. Vervolgens wordt weer rsync opgeroepen met onder andere de 'delete' optie die uw lokale bestanden synchroniseert met de weekly.0 map. Bestanden die nieuw zijn worden gekopieerd, bestanden die gewijzigd zijn worden overschreven en verdwenen bestanden worden ook op de backup verwijderd. Dit overschrijven en verwijderen is relatief. Een bestand wordt pas fysiek van de schijf verwijderd als er geen hardlinks meer naar verwijzen. In dit geval is dat wel nog zo (met name die van vorige week), dus de bestanden in kwestie zullen fysiek op de schijf blijven. In de nieuwe backup zullen verwijderde bestanden echter niet meer voorkomen (zichtbaar zijn) en zullen gewijzigde bestanden verwijzen naar hun nieuwste versie. Tot slot wordt weer de weekly.0 map aangeraakt na de synchronisatie.
In de derde week wordt eerst weekly.1 hernoemt (verplaatst) naar weekly.2 waarna het proces van vorige week zich herhaalt.
Week vier begint met het verplaatsen van weekly.2 naar weekly.3 en is verder identiek aan vorige week. Na vier weken hebt u vier backups (weekly 0 tot en met 3); tijd voor een maandelijkse backup. rsnapshot monthly doet niet meer dan de oudste weekly hernoemen naar de recentste monthly na deze laatste te roteren. Om de vier weken voert u dus naast een wekelijkse ook een maandelijkse backup uit, in de weken daartussen enkel een wekelijkse.