Ehmm, ruwweg twee volwaardige (wekelijkse) backups van 2750MB elk, plus nog wat MB's voor de dagelijkse incrementele backups - en dan nog gecomprimeerd opgeslagen. Als ik zo snel even kijk in de Amazon cloud storage, dan schat ik het op zo'n 4GB data.
Voor de volledigheid, als documentatie voor mijzelf en wellicht interessant voor anderen:
Amanda geinstalleerd op een debian 'Wheezy' machine; amanda draait als user 'backup' die als homedir /var/backups heeft. Die user had volgens mij nog geen default shell en heb ik /bin/bash als shell gegeven - volgens mij maakte dat m'n leven een stuk makkelijker bij het uitvogelen van dit alles. Zo af en toe wil je dingen uitproberen als user 'backup'.
Maar goed, even een quick&dirty howto:
In /etc/crontab de volgende regel toegevoegd
code:
1
| 0 03 * * * backup /usr/sbin/amcheck -m backup_my_documents && /usr/sbin/amdump backup_my_documents |
(elke nacht om drie uur een backup-run)
In /etc/amanda heb ik een directory 'backup_my_documents' met daarin twee bestanden:
/etc/amanda/backup_my_documents/disklist:
code:
1
2
3
4
5
6
7
| localhost Maildir /home/UserName/Maildir server-encrypt-fast
localhost MyDocuments "/home/UserName/My Documents" {
server-encrypt-fast
exclude "./Boeken & tijdschriften"
exclude append "./Handleidingen"
exclude append "./foto's"
} |
Ofwel, twee disks te backuppen: mijn e-mail folder en m'n documentenfolder, waarbij ik wat minder waardevolle dingen exclude. (foto's wil ik liever wel backuppen, maar dan werd het veel data en minder betaalbaar).
Beide gebruiken dumptype 'server-encrypt-fast', wat dus iets is als comprimeren en encrypten. Verderop meer daarover.
/etc/amanda/backup_my_documents/amanda.conf:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| org "Backup of Maildir/My Documents"
logdir "/var/log/amanda"
infofile "/var/backups/state/backup_my_documents/curinfo"
indexdir "/var/backups/state/backup_my_documents/index"
tapelist "/var/backups/state/backup_my_documents/tapelist"
changerfile "/var/backups/state/backup_my_documents/s3-statefile"
tpchanger "chg-multi:s3:<s3_access_key>-backups/backup_my_documents/slot-{01,02,03,04,05,06,07,08,09,10,11,12,13,14}"
mailto "Mijn@Mailadres.net"
# amazonaws S3
device_property "S3_ACCESS_KEY" "<S3-ACCESS_KEY>"
device_property "S3_SECRET_KEY" "<geheimekey>"
device_property "S3_BUCKET_LOCATION" "EU"
device_property "S3_SSL" "YES"
tapetype S3
tapecycle 14
dumpcycle 7
define tapetype S3 {
comment "S3 Bucket"
length 5120 gigabytes
blocksize 1 gigabytes
}
define dumptype server-encrypt-fast {
program "GNUTAR"
comment "dump with fast client compression and server symmetric encryption"
compress client fast
encrypt server
server_encrypt "/usr/sbin/amcrypt"
server_decrypt_option "-d"
maxpromoteday 0
} |
Het meeste spreekt denk ik wel voor zich, of weet ik ook niet (zoals die length/blocksize getallen in het tapetype). Ik heb gekozen voor 'EU' als opslaglocatie, omdat voor mij dit liever niet in de USA terecht komt (naieve 'dan-kan-de-NSA-er-niet-bij' instelling) en ik werkgelegenheid in de EU support. En 'ssl' als beveiliging tijdens de transfer zelf. Access key & secret key heb je als het goed is bij de Amazon S3 console ergens kunnen aanmaken.
Let op: EU-locaties bij Amazon hebben wat vage extra eisen die andere locaties niet hebben. De S3 access key is in hoofdletters en diezelfde key heb ik ook gebruikt voor m'n bucketnaam - maar die moest weer in kleine letters.
Verder heb ik 14 'slots' gedefinieerd - de eerste backup naar slot #1, de volgende naar #2, volgende naar #3 en na #14 gaat 'ie over #1 heen. Om de 7 (dumpcycle) backup-runs doet 'ie een volledige dump in plaats van een incrementele.
Je ziet hier ook het eerder genoemde dumptype gedefinieerd worden. Hoe/waar exact gnutar dan weer gespecificeerd wordt weet ik niet, maar blijkbaar roept 'ie gnutar aan met niet al te hevige compressie; daarnaast encryptie met /usr/sbin/amcrypt. Onder water roept die weer /usr/bin/aespipe op, een standaard binary van de Debian distro.
Er is nog iets vaags aan Amanda: ze probeert standaard de backup-hoeveelheid een beetje te spreiden, ze doet dus liefst NIET een full-backup gevolgd door vele incrementele. Dat is te sturen - volgens mij heb ik dat met dat 'maxpromoteday 0' uitgeschakeld zodat het lekker voorspelbaar is: strak eens per week van alle 'disks' een volledige dump.
Dan, encryptie:
Je moet een secret key aanmaken door wat random data te genereren en met een passphrase te encrypten:
code:
1
| head -c 2925 /dev/random | uuencode -m - | head -n 66 | tail -n 65 | gpg --symmetric -a > ~backup/.gnupg/am_key.gpg |
... die passphrase die je zelf daar invoert moet je opslaan in ~backup/.am_passphrase
... en let uiteraard even op alle benodigde rechten (ofwel, vooral dichtzetten voor iedereen behalve user 'backup' zelf.) Hij staat hier op chmod '600', owner backup en group disk.
Die random data genereren kan een eeuwigheid duren, want als het systeem te weinig random activiteit heeft zal /dev/random maar weinig outputten. Je kan dit flink verbeteren door haveged te installeren:
code:
1
| sudo apt-get install haveged |
De pseudo-random processor activiteit wordt door haveged gebruikt om /dev/random wat produktiever te maken. Use at own risk!
Tot slot heb ik nog een Makefile aangemaakt:
/var/backups/Makefile:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| CONFIG=backup_my_documents
RUN=daily
KEY=<s3_access_key>
check:
amcheck $(CONFIG)
devcheck:
for i in `seq -f "%02g" 1 14`; do amdevcheck $(CONFIG) s3:$(KEY)-backups/$(CONFIG)/slot-$$i; done
dump:
amdump $(CONFIG)
report:
amreport $(CONFIG)
slots:
mkdir -p /var/backups/state/$(CONFIG)/curinfo
mkdir -p /var/backups/state/$(CONFIG)/index
for i in `seq 1 14`; do amlabel -f $(CONFIG) $(CONFIG)-$$i slot $$i; done
clean:
rm -fr /var/backups/state/$(CONFIG)/* |
Hier bovenin dus in kleine letters je s3 access key opgeven. Een 'make slots' maakt dan wat state-opslagdirs aan en creert de nodige structuren in je Amazon S3 cloud voor de 14 slots. Die andere keuzes in de makefile zijn voor de volledigheid, maar niet echt in gebruik voor het maken van de backups.
Tot slot nog een kleinigheid:
/etc/amandahosts:
code:
1
2
| localhost backup amdump
localhost root amindexd amidxtaped |
ik weet niet meer exact wat ik hier aan aangepast heb, maar er was een toevoeging nodig om het terughalen van een backup mogelijk te maken.
Verder: man pages, HowTo's op het internet - er is meer te vinden dan alleen dit. En misschien klein beginnen (ik begon met enkel /etc te backuppen - da's relatief klein en snel) voor je je volledige fotoverzameling er op los laat. En als je de boel niet vertrouwt: eerst een backup maken voor je de eerste testen doet!
Vergeet ook niet om:
Je passphrase en GPG key off-site te backuppen;
Te oefenen met het terughalen van (delen van) je backup - zowel met de Amanda tools als wellicht met het zelf downloaden van je backup-file en met aespipe zelf decrypten. Leerzaam.
Vragen? Vraag maar raak - maar m'n geheugen is wel wat dingen kwijt, ruim een jaar na het zelf uitzoeken.