torsdag 2 augusti 2007

Att göra backup med rsync över nätet mellan två datorer

Backup är viktigt, fast det brukar man vanligtvis komma på först när man har slarvat bort en viktig fil, blivit bestulen på sin dator eller drabbats av kraschande hårddiskar. Jag skrev för ett tag sedan om hur jag gör för att backa upp min arbetsdator i teorin. Sedan dess har jag fått en del frågor om hur det går till i praktiken. Instruktionerna är skrivna för Mac OS X Tiger (10.4.10) men det är möjligt att det fungerar bra på andra operativsystem också.

1. Aktivera SSH

Du behöver aktivera SSH på båda datorerna. På en Mac med OS X gör du det i Systeminställningar -> Fildelning -> TJänster. SSH kallas för Fjärrinloggning, se till att tjänsten är påslagen och att tjänsten inte blockeras i brandväggen om du har den påslagen. Rsync är redan förinstallerat, så den behöver vi inte bry oss om. Jag kommer nedan att använda begreppet user@host några gånger. Det innebär att du ska ersätta detta med användarnamnet och ip-adressen/domännamnet till den dator du ska skicka filerna till.

2. Ställ in SSH-nycklar

Vi vill ju att backup-processen ska köras automatiskt. Alltså kan vi inte sitta och skriva in lösenord som krävs för att logga in på datorn vi ska synkronisera till. Starta terminalen och skriv (eller kopiera rakt av din slöfock): ssh-keygen -t dsa -b 1024 -f ~/rsync-key Tryck enter två gånger för att lämna lösenordsfälten tomma. Kopiera över den publika nyckeln till datorn som du ska synka till. scp ~/rsync-key.pub user@host:~ Nu ska vi lägga till nyckeln bland de godkända nycklarna på servern. ssh user@host mkdir ~/.ssh chmod 700 ~/.ssh mv ~/rsync-key.pub ~/.ssh/ cd ~/.ssh touch authorized_keys chmod 600 authorized_keys cat rsync-key.pub >> authorized_keys

3. Plocka hem backupscriptet

Placera detta script på något bra ställe på din lokala burk. Jag brukar lägga den i en undermapp till hem-mappen där jag har mina scripts. Kalla det backup.sh Sedan kör du chmod +x backup.sh så att filen är körbar. Glöm inte att ändra inställningarna i backup.sh så att det matchar dina användarnamn och backupställen. Första gången du kör backupen kommer det ta lång tid eftersom allt måste flyttas över. Nästa gång flyttas bara ändrade filer över. Vi kör igång den första backupen nu. I Terminalen går du till mappen där du har backup.sh och kör igång den med /bin/sh backup.sh Om allt går som det ska står det "Sources verified. Running rsync...". Det brukar ta en timme eller två innan första omgången är klar, beroende på hur mycket du har i din hem-mapp och hur snabb uppkoppling du har. Min dagliga backup brukar vara klar efter ungefär en kvart.

4. Automatisera

Om du vill kan du nu automatisera backupen med hjälp av Crontab. Jag brukar köra backup varje vardag klockan 12.00 för då är jag med största sannolikhet på lunch. Om dina datorer står på dygnet runt kanske du vill ha backupen gjord på natten så att det inte stör ditt arbete. För att redigera crontab-filen (den som håller reda på när program ska köras automatiskt) använder vi crontab -e Antagligen får du upp en tom fil. Tryck på "a" för att hamna i skrivläge (det står "INSERT") längst ned på skärmen Jag använder följande kommando för att köra min backup-fil # Run the remote backup every working day at 12.00 0 12 * * 1-5 /bin/sh /users/david/scripts/backup.sh Tryck Escape och skriv :x när du har redigerat klart. Om du inte är bekant med Crontab sedan tidigare kan du läsa om syntax på wikipedia Hör gärna av dig om du lyckas eller om du stöter på problem. Det är mycket möjligt att jag har missat något. Stora delar av tipset kommer ursprungligen från Brice Burgess. Han har även några tips på hur du gör det hela ännu mer säkert.

9 kommentarer:

  1. Perfekt, med några små förändringar funkade det bra med mina datorer!

    Inte illa att hitta en sådan beskrivning på svenska o allt!

    SvaraRadera
  2. Första synkningen gick långsamt tycker jag men nu rullar det på jättefort. rsync måste snabba upp det där på något sätt eller?

    SvaraRadera
  3. Vilken syntax skall det vara i exclude filen ?

    SvaraRadera
  4. Gilius: du skriver bara filnamnen du vill exkludera, ett på varje rad. Wildcards är tillåtet.

    *.txt
    *.tmp
    /users/david/*.avi
    hemlig_fil.pdf
    .Trash*
    etc.

    SvaraRadera
  5. Är det möjligt att utelämna en helt kataloghierarki? Ex.

    Jag vill göra backup på hela /home/dilbert men jag vill inte att något under /home/dilbert/.wine ska hänga med.

    Kommer det att funka om jag lägger till /home/dilbert/.wine/*
    i exclude filen?

    SvaraRadera
  6. Om man inte har ssh-keygen på sin clien (qnap ts-409). Hur gå man då tillväga för att skapa ssh nycklar?

    SvaraRadera
  7. Jag har testat att köra detta på leopard och det fungerar utmärkt även där, men vet du hur man gör om man vill schemalägga aktiviteten där?

    SvaraRadera
  8. Schemaläggningen fungerar på samma sätt, jag använder crontab för det även på Leopard.

    SvaraRadera