Dit is een Nederlandstalige howto over hoe je backups kunt maken
met rdup — waarbij gezegd
moet worden dat ik de auteur van rdup ben. rdup is geen point
en click applicatie, 't is bedoelt als een powertool voor mensen die
(meer) controle willen over hun backups.
Wat is rdup?
rdupis een platform voor backups. Het genereert een lijst van files die moeten worden gebackupped. Verder levert het de tools om deze lijst te verwerken. Het delegeert encryptie, compressie, transport en format-conversie naar andere programmas op een echte Unix manier.
Of met andere woorden:
rdupis de eerste backup tool die geen backups maakt!
Eerst een (semi)waarschuwing, als je "gewoon" je data van machine A naar
B wilt kopieren en verder niks geavanceerders nodig hebt (encryptie,
compressie of whatever), dan wil je waarschijnlijk
rsync of rsnapshot gaan gebruiken.
Goed, als je nog leest, dan wil je waarschijnlijk meer geavanceerde
backups maken dan je tot nu toe hebt gaan. Met rdup kun je:
- alle bestanden laten converteren, denk aan encryptie, maar elk Unix filter kan hiervoor gebruikt worden (rev, sort, grep, gzip, etc.);
- pad encryptie, oftewel
/home/miekgwordt iets als/Xyfgs==/maAXX==in je backup; - remote storage; bewaar je backup offsite;
- verschillende output formaten: tar, pax of files op disk.
In dit artikeltje wil ik het hebben over:
- Installatie;
- Backups met
rdup-simple; - Remote backup;
- Restore.
Installatie
We gaan hier rdup zelf even compileren, daarvoor heb je wel wat
extra pakketten nodig. Op een Debian/Ubuntu machine:
# apt-get install libglib2.0-0 libglib2.0-dev libpcre3-dev libpcre3 \
libarchive-dev libarchive1 mcrypt automake autoconf gcc libc6-dev
Dan rdup downloaden vanaf
miek.nl/projects/rdup/rdup.tar.bz2.
Je krijgt dan automatische de laatste versie, nu rdup-1.1.2. Nu
uitpakken, compileren en installeren:
$ tar xvf rdup-1.1.2.tar.bz2
$ cd rdup-1.1.2
$ ./configure && make
# make install
Als alles goed gegaan is heb je nu rdup geinstalleerd in /usr/local,
en zou /usr/local/bin/rdup -V moeten werken en:
rdup 1.1.2
weer geven. rdup zit ook in de meeste distributies, maar dan is
je installatie niet altijd up to date en er zijn de laatste tijd nogal
wat wijzingen geweest. Je kunt ook het GIT repository uit checken,
zie daarvoor miek.nl/projects/rdup.
Backups maken
rdup bestaat uit een 3-tal commando's:
rdup: dit zoekt uit wat er gebackupped moet worden;rdup-tr: transformeer rdup output naar iets anders (tar, pax, ...). In deze howto zullen we hiermee vooralsnog weinig doen;rdup-up: update een bestaande directory met een nieuwe backup.
Verder zit er een hulp script dat een aantal zaken makkelijker kan
maken, dit script heet rdup-simple en is een wrapper rond de drie
genoemde commando's. Het werkt als volgt:
$ /usr/local/bin/rdup-simple ~ /backup/
Maakt een backup van je homedir (~) naar /backup/ waar rdup-simple
een datum structuur aanmaakt, je krijgt dus iets te zien als 201003/15
als je op 15 maart 2010 een backup maakt.
Met de -z vlag van rdup-simple wordt de hele backup gezipped. Met
-k KEYFILE worden alle files gecodeerd met de sleutel die in de
file KEYFILE staat. Deze vlaggen kunnen ook gecombineerd worden:
$ echo "mijn sleutel" > KEY
$ /usr/local/bin/rdup-simple -z -k KEY ~ /backup
geeft je een gecomprimeerde en gecodeerde backup in /backup:
$ file /backup/201003/15/home/miekg/bin/cgo
/backup/201003/15/home/miekg/bin/cgo: mcrypt 2.5 encrypted
data, algorithm: rijndael-128, keysize: 32 bytes, mode: cbc,
Inderdaad gecodeerd. Ook maar even controleren of het gzipped is. Eerst decoderen:
$ mcrypt -d -f KEY < /backup/201003/15/home/miekg/bin/cgo > /tmp/cgo.plain
$ file /tmp/cgo.plain
/tmp/cgo.plain: gzip compressed data, from Unix, last modified: Sun Feb 7 12:03:36 2010
Ja, die is dus ook gezipped; rdup-simple zal altijd eerst comprimeren
en dan coderen.
Going places
Als je gewoon lokaal een backup maakt die niet gecodeerd is, kun
je net zo goed rsync of rsnapshot gebruiken. Het wordt pas
leuk als je jouw backup bij iemand anders wilt neerzetten en
dan natuurlijk gecodeerd en eventueel ook met pad-encryptie.
Deze functionaliteit is ook in rdup-simple ingebouwd.
Met:
$ rdup-simple ~ ssh://user@remotehost/backup/mijnhost
stuur je een backup van je home directory naar remotehost in
de directory /backup/mijnhost. Die backup staat daar zonder
encryptie en dat kan natuurlijk niet, dus:
$ echo "mijn geheime sleutel" > KEY # voor de file encryptie
$ echo "pad sleutel12345" > PADKEY # pad encryptie, precies 16 lang
$ rdup-simple -z -k KEY -X PADKEY ~ \
ssh://user@remotehost/backup/encryptedhost
Nu krijgen we dus een backup die gecodeerd is plus waarin elk pad gecodeerd is en waarin de files gecomprimeerd zijn. Dit is dus absoluut niet te lezen voor buitenstaanders, en ook niet meer voor jezelf als de encryptie sleutels kwijt raakt! De backup ziet er dan ongeveer zo uit:
$ ls -Rl /backup/encryptedhost
/backup/encryptedhost/201003/16:
drwxr-xr-x 3 miekg miekg 4.0K Mar 16 11:29 MaSchL_1t1U6LCJMQ5OdKg\=\=/
/backup/encryptedhost/201003/16/MaSchL_1t1U6LCJMQ5OdKg==:
-rwxr-xr-x 1 miekg miekg 397 Feb 20 2009 0Z0qU5amjVCNA0oadhW3Uw\=\=*
-rwxr-xr-x 2 miekg miekg 1.3K Feb 20 2009 2FFibrYPg_uAkEuN3Ff0tg\=\=*
-rwxr-xr-x 1 miekg miekg 557 Apr 13 2009 doxnpTxs3ImH__swNVZLMeSigknQ7JiWlJYYGu54Foo\=*
lrwxrwxrwx 1 miekg miekg 24 Mar 16 11:29 iZgUeeB4vURP7wIST_JXlw\=\= -> 2FFibrYPg_uAkEuN3Ff0tg\=\=*
Dat die laatste file is een symlink is, is zo'n beetje het enige dat te onderscheiden is.
Terug zetten backup
Ik geloof in het KISS
principe en dus maakt rdup-simple alleen maar backups, er zit
zelfs geen support in om oude backups op te ruimen, want daar hebben
we al een andere tool voor (rm -rf). Het terug zetten van een
backup is feitelijk een omgekeerde backup maken. We grijpen
dan terug op de rdup commando's.
Laten we de backup die
we gemaakt hebben met /usr/local/bin/rdup-simple -z -k KEY ~ /backup
eens terug zetten naar een directory /tmp/restore.
$ rdup -Pmcrypt,-d,-f,KEY,-q -Pgzip,-d,-c /dev/null \
/backup/201003/15/home/miekg | rdup-up -t /tmp/restore
Apropos: dit is bijna identiek aan hoe
rdup-simplede pipeline samenstelt voor de backup...
We laten rdup hier alle bestanden uit de backup directory
oplepelen (rdup /dev/null /backup/....) en laten rdup deze
eerst door mcrypt -d -f KEY -q sturen, in de commando regel hierboven
is dat:
-Pmcrypt,-d,-f,KEY,-q
En daarna nog een keer door gzip -d -c, met:
-Pgzip,-d,-c
Dit wordt dan allemaal opgevangen door rdup-up en die zet het
in /tmp/restore neer. Nu krijg je in je restore directory wel
het hele backup pad (tmp/backup/201003/16/home/miekg) terug, dus
de files waar het om gaat staan vrij "diep". Gelukkig kun je
hier om heen werken door de -s N vlag te gebruiken van rdup-up deze
sloopt N pad elementen uit je restore, dus met
$ rdup -Pmcrypt,-d,-f,KEY,-q -Pgzip,-d,-c /dev/null \
/backup/201003/15/home/miekg | rdup-up -t -s 5 /tmp/restore
Wordt /tmp/backup/201003/16/home (5 slashes) van het pad
afgesnoept en staat de restore gelijk onder /tmp/restore. Je zou
in dit geval zelfs -r /tmp/backup/201003/16/home/miekg kunnen
gebruiken, welke niet slashes telt maar gewoon dat pad-deel eraf sloopt.
Meer info
Er is nog wel meer te vertellen over rdup, maar ik wil het hierbij
laten en eventueel nog een artikel erover schrijven. Heb je nog
vragen en/of opmerkingen dan kun je
direct naar mij mailen of kijken op
de rdup pagina.

