måndag 15 september 2008

Backup skript

Kommer visa två backupskript här, en för en lokal backup och en backup av en laptop.

Detta skript använder sig av hard-links så det tar inte upp mer utrymme att ha 5 backuper än en.
Detta skript skapar en backup här /media/usbBackup/Backup/Bilder/back-$date datument läggs till så man vet när backupen är tagen. Det är en lokal mapp som det görs en säkerhetskopia på:
1 #!/bin/bash
2 # rsync -aP --link-dest=PATHTO/$PREVIOUSBACKUP $SOURCE $CURRENTBACKUP

3 date=`date "+%Y-%m-%dT%H:%M:%S"`
4 rsync -aP --link-dest=/media/usbBackup/Backup/Bilder/current /mnt/blandat/Bilder /media/usbBackup/Backup/Bilder/back-$date
5 rm -f /media/usbBackup/Backup/Bilder/current
6 ln -s back-$date /media/usbBackup/Backup/Bilder/current


Här görs det en backup från en laptop som kör en ssh server som använder nycklar för att låta en logga in. Jag har Specificerat en egen port som ssh servern kör, standard är 22.
1 #!/bin/bash
2 date=`date "+%Y-%m-%dT%H:%M:%S"`
3 rsync -aP -e "ssh -p 61101" --link-dest=/media/usbBackup/Backup/Dokument/backDokLaptop användare@IP:/home/användare/Dokument /media/usbBackup/Backup/Dokument/backDokLaptop-$date
4 rm -f /media/usbBackup/Backup/Dokument/backDokLaptop
5 ln -s backDokLaptop-$date /media/usbBackup/Backup/Dokument/backDokLaptop

Tyvärr så gick det inte att använda PATHTO/$PREVIOUSBACKUP över (och fortfarande kunna dra nytta av hard-links) IP därför kör jag skriptet som gör en säkerhetskopia av laptopens Dokument i från den stationära datorn enligt skriptet ovan.

Om ni vill göra det automatiskt så kan ni använda crontab kom dock ihåg att backupenheten måste vara monterad... Själv så kör jag inte mitt i crontab eftersom jag har en extern enhet som jag bara monterar när jag ska göra en backup.

Nedan ser ni hur crontab kan se ut när man lagt in skriptet i det och hur man kan spara en logfil. Egentligen så behöver ni bara skriva ./backupskriptet.sh &>> loggfil.log eller &> loggfil.log beroende på om du vill skriva över loggfilen varje gång eller lägga till i den.

Här nedan skapar crontab loggfilen automatiskt i den mapp du vill och loggfilen fylls på för varje gång skriptet körs, byt ut &>> mot &> ifall du vill att logfillen ska skrivas över varje gång i stället. & tecknet gör så att logfilen innehåller både stdout och stderr. Om det är väldigt många filer och mappar så kan det bli en stor fil... Ni kan gå in och rensa efter första backupen är körd eftersom den visar bara filer som har ändrats/lagts till pluss alla mappar. Eftersom skriptet ovan använder sig av hard-link och de funkar bara på filer och inte mappar så måste varje mapp(inte innehåll) kopieras vid varje backup tillfälle. Därför skrivs alltid de in i loggen. Däremot så filerna som redan har gjorts en hard-link till visas alltså inte i loggen, därför blir loggen störst vid första körningen.

Skapa en mapp i din hemma mapp som heter Backuplogg där loggfilerna kommer att sparas.

Redigera crontab så här sudo crontab -e (sudo crontab -l visar innehållet). Kom ihåg att ta bort radnumreringen om ni kopierar. Den här gör backupen varje lördag kl 13:00

1. # m h dom mon dow command
2. * 13 * * 6 /bin/bash /home/användare/bin/minBackupMusik.sh &>> /home/användare/Backuplogg/minBackupMusik.log

Här kan ni läsa mer ingående om hur det hela fungerar:
http://blog.interlinked.org/tutorials/rsync_time_machine.html

Inga kommentarer: