Avanceret backup med rsnapshot

Dette indlæg er et uddrag fra mine linuxnoter, hvor der er en række andre mini-howtos og artikler. De er frit tilgængelige og kan hentes her.

Der er mange måde at lave back op på. Den klassiske unix metode er rsync, men denne foregår ikke over en krypteret forbindelse og er også mere eller mindre besværlig at sætte op. rsnapshot er baseret på rsync og ssh, så dataoverførslen er krypteret. Endvidere er den nem at sætte op og bruger hårde links. rsnapshot kan bruges til at lave backups af andre maskiner på et netværk, men det er lige så nemt at lave backup af data på den lokale maskine.

Hårde links
Hvis man laver en fil i et filsystem og får den en adresse i filsystemet. Hvis man laver en kopi af denne fil vil filen blive gemt et nyt sted på harddisken og få en ny adresse. I stedet for at lave en kopi af dataene kan man lave et hårdt link til adressen af dataene. På den måde kan man have et nyt filnavn, der peger på samme adresse. Dermed er dataene kun lagret et sted og fylder kun på hardisken en gang. Det smarte i relation til rsync er f.eks. at to ugentlige backups af nogle data, hvor af filen foo.bar er uændret mellem de to, vil kunne bruge hårde links og på den måde nøjes med at gemme dataene en gang og spare pladsen.

Installation og opsætning
Jeg har indkøbt en ny harddisk og lavet en partion 115G (læs mere om partionering i afsnit 3.27) som jeg vil bruge til backup. Denne partion mountede helt ude i roden i /backup/ og bad linux om at mounte partionen, der hver gang jeg startede maskinen ved at tilføje følgende linje i min /etc/fstab:

/dev/hda4         /backup            ext3     defaults           0         2

Installationen af rsnapshot ganske lige til (jeg bruger ubuntu i eksemplet):

root@newton:~$ aptitude install rsnapshot

Derefter skal rsnapshot sættes op ved at redigere i filen /etc/rsnapshot.conf. Ved en standard installation medfølger der en velkommenteret konfigurationsfil som egentligt bare skal redigeres. De vigtigste af mine ændringer er:

#  Her angives hvor i det lokale filsystem snapshotsene skal ligges 
snapshot_root   /backup 
 
#Intervallet angiver hvor mange rsnapshots man vil have tilgængelige. 
# Jeg har valgt 4 måneder og 4 ugers historie. 
interval     weekly  4 
interval     monthly 4 
 
#Dette ekskludere alle backupfiler, der ender med ~ og en folder med 
#rodefiler 
exclude *~ 
exclude /home/tjansson/tmp/ 
 
#Dette giver mere detaljere output til konsolen under kørsel. 
verbose 3 
 
# Her definere jeg hvilke foldere, der skal laves backup af og hvor det 
#skal gemmes. 
backup  /home/tjansson/      localhost/ 
backup  /home/pille/           localhost/ 
 
# Her definere at folderen /home/tjansson på min bærbarde, der har adressen 
#  192.168.1.101 skal blive back’et up til folderen /backup på min stationære maskine. 
backup  tjansson@192.168.1.101:/home/tjansson/  dirac- laptop/

Det smarte ved rsnapshot er at man kan bruge den til at lave lokal backup af nogle foldere på en harddisk til en anden harddisk på samme maskine, men man kan også bruge rsnapshot til at lave backup af data fra en fremmede maskine, her min bærbare kaldet dirac-laptop, på den lokale maskine og omvendt at lave backup af lokale data til en fremmede server. For at kunne automatisere ssh overførslen af data skal man sætte ssh op med brug af nøgler, se afsnit 3.20.1.

Den første overførsel tog et par timer i mit tilfælde, men de næste var meget kortere, da jeg ikke havde ændre dataene særligt meget og rsnapshot som sagt bruger hårde links.

Test og automatisering
Efter at have redigeret konfigurationsfilen vil jeg gerne teste af min opsætning er korrekt. Dette gøres med

root@newton:~$ rsnapshot  - t weekly 
echo 6225  >  /var/run/rsnapshot.pid 
/bin/cp  -al /backup/weekly.0/ /backup/weekly.1/ 
/usr/bin/rsync  - a  --delete  -- numeric- ids  --relative  -- delete- excluded \ 
      --exclude=*~ --exclude=/home/tjansson/tmp/ /home/tjansson/ /backup/weekly.0/localhost/ 
/usr/bin/rsync  - a  --delete  -- numeric- ids  --relative  -- delete- excluded \ 
      --exclude=*~ --exclude=/home/tjansson/tmp/ /home/pille/ /backup/weekly.0/localhost/ 
touch /backup/weekly.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
    --exclude=*~ --exclude=/home/tjansson/tmp/ --rsh=/usr/bin/ssh \
    tjansson@192.168.1.101:/home/tjansson/ /backup/weekly.0/dirac-laptop/
touch /backup/weekly.0

og man kan dermed se, hvad rsnapshot vil gøre når man bruger programmet uden testparameteret -t. I stedet for at kører programmet selv hver eneste dag kan vi bede crontab om at gøre jobbet, så jeg kører kommandoen crontab -e som root og skriver linjerne:

#   m  h  dom mon dow   command 
0 5 * * 0 /usr/bin/rsnapshot weekly 
30 5 * 1 * /usr/bin/rsnapshot monthly

som beder cron om at kører programmet hver 5:00 og 5:30 hver, hver uge om mandagen og den første i hver måned repektivt. Dette er selvfølgeligt mest relevant for severe, som altid er tændt. Hvis man selv vil styre processen er det bare at kører følgende kommendo, som root for at lave en af de ugentlige backup’s

root@newton:~$ rsnapshot weekly

Only registered users can comment.

  1. Ser ret spændende ud tjansson og det skal da prøves, men jeg sidder lidt og tænker på; når nu dit /home/tjansson går i stykker af en eller anden grund (kæresten sletter dit home efter en diskussion over en flaske rødvin, hun har fået tiltusket sig root passwd:-)) – eller man får lavet en dum rm …* og så forsvandt det /home f.eks.
    Hvordan får du så din backup hentet??

  2. Borelia – Håber jeg nogen sletter min /home over en rødvins diskussion :D, men hvis det var tilfældet jeg gå ind i f.eks. /backup/daily.0/localhost/home/tjansson og kopiere alle filerne tilbage til /home. Det er vist alt der er til det – filerne ligger u komprimerede og præcis som de så ud, da de var /home/tjansson

    Det er meget behageligt at arbejde med rsnapshot (rsync) som backup, da filerne ikke er komprimeret eller lagt ned i et eller andet underligt format, som jeg så den anden dag at Windows compressor, eller hvad det nu hed, gjorde. Det gør det meget nemt at finde en tidligere version på en anden maskine, hvis den ene harddisk brænder helt sammen.

Leave a Reply