kristina wrote:
>
> findes der en howto på det da det er sådan en metode jeg står og skal
> bruge.
Det er et stykke software som jeg selv har skrevet og indtil
videre er der så vidt jeg ved kun to brugere. Det fungerer
fint, men eftersom ingen andre end mig selv har sat det op
har jeg heller ikke fået taget mig sammen til at skrive en
vejledning. Jeg har heller ikke fået lavet scripts der er
helt generelle nok.
Her følger et eksempel på et backup script til /etc/cron.daily.
Lige den her udgave har jeg ikke testet, men den er i store
træk ligesom det jeg selv bruger.
#!/bin/bash
# Sat en variabel til at pege på det lokale ukrypterede storage.
STORAGE=/mnt/backup/storage
# En shell funktion, der tager en backup på stdin og beregner
# sha1sum samtidig med at den skrives til arkivet. >() er noget
# bash magi, der udfører kommandoen mellem paranteserne og
# erstatter den med navnet på en pipe således at tee skriver til
# to pipes. sed kommandoen erstater - med det rigtige navn.
putbackup(){
tee >( sha1sum |
sed -e "s/-/$1/" >> "$STORAGE".sha1
) | tstore "$STORAGE" "$1"
}
# Her følger backupscriptet. Det hele køres i en subshell,
# der sender stdout og stderr til en logfil (angivet i
# bunden af scriptet).
(
# Sætter en environment variabel som tstore vil
# opdatere løbende. På den måde kan man gennem /proc
# se hvor mange bytes tstore har læst fra stdin.
export TSTORE=abcdefghijklmnopqrstuvwxyz
cd /
# Først tages backup af /home. Den gemmes i arkivet med
# et tidsstempel i filnavnet.
tar -c home | putbackup home.$(date +%s).tar
# Dernæst tages backup af /. -l betyder, at tar skal
# springe over mountpoints. Altså kun rodfilsystemet
# backupkopieres.
tar -c -l / 2> >(
# Vha. lidt shellmagi sender jeg stderr gennem en
# pipe, der frasorterer de mange warnings genereret
# af tar.
grep -v --line-buffered "^tar: .*: socket ignored$" 1>&2
) | putbackup sys.$(date +%s).tar
# Jeg har et mountpoint til storage, således at man har
# umiddelbar adgang til alle tar filerne. Først unmountes
# den gamle version af arkivet. Dernæst mountes den nye
# version med de to backups, der netop er lavet. Denne
# del kræver at man har installeret tstorefs.
while umount /mnt/backup/storage.mnt ; do : ; done 2>/dev/null
mount -t tstore6 /mnt/backup/storage{,.mnt} -o ro,loop
# Til sidst anvendes tsync til at opdatere en krypteret
# udgave af arkivet på en anden server. Såfremt
# synkroniseringen mislykkes er der ingen skade sket,
# den næste synkronisering vil bare skulle overføre lidt
# flere data.
HOME=/root tsync /etc/syncinfo ssh -4x tsync@backupserver \
tsync-server /mnt/backup/storage.tsync &
) >> "$STORAGE".log 2>&1
Før ovenstående script kan anvendes skal der foretages lidt
opsætning.
Et nyt arkiv kan oprettes med disse to kommandoer:
tcreate /mnt/backup/storage
tgenhash /mnt/backup/storage
Før tsync kan anvendes skal den også sættes op. Det gøres
ved at udføre følgende kommando efter den første backup
er lagt i arkivet:
tsync-init /mnt/backup/storage /tmp/storage.tsync /etc/syncinfo
Den vil oprette /tmp/storage.tsync og /etc/syncinfo.
storage.tsync flytter man over på serveren. Hvis man kun
har en langsom internetopkobling kan storage.tsync f.eks.
overføres vha. en usb disk.
Der skal laves mulighed for at klienten kan logge ind på
serveren vha. en ssh nøgle. Man kan evt. anvende command=
i sin .ssh/authorized_keys fil for at klienten kun kan
udføre tsync-server og intet andet.
Den bedste sikkerhed opnås ved at installere tsync-server
som en sgid executable. Det skal så kun være denne gruppe
der har læse og skrive adgang til storage.tsync på serveren.
tstore kan hentes fra
https://www.daimi.au.dk/~kasperd/tstore
Den nyeste version er tstore-0.6.2, jeg finder lige den
nyeste udgave af tsync, for den der ligger i førnævnte dir
har en mindre bug. Under alle omstændigheder bør man lige
sikre sig, at man har fået sat tstore op på en hensigtsmæssig
måde, før man begynder på at sætte tsync op. F.eks. bør man
undgå at overflødige ting inkluderes i backupen, det gælder
bla. backupen selv.
Kommentarer og spørgsmål er meget velkomne.
Fortsættelse følger.
> men er p.t ude at rejse så jeg kan jo ikke svare på tråden om 2 md.
Ikke helt forstået.
--
Kasper Dupont -- Rigtige mænd skriver deres egne backupprogrammer
#define _(_)"d.%.4s%."_"2s" /* This is my new email address */
char*_="@2kaspner"_()"%03"_("4s%.")"t\n";printf(_+11,_+6,_,6,_+2,_+7,_+6);