Ta backup på din VPS med hjälp av rsync

[Även om denna korta guide inte är komplett i alla detaljer så bör den iaf kunna hjälpa en någorlunda smart linuxnybörjare (jag! till exempel) att få igång backuper via rsync.]

Sedan ett tag tillbaka har jag som bekant en VPS för mina webbplatser stalker.se och eskapism.se, mina Facebook-program Pins! and badges, BF2 Friendly Fire och Filmtipset samt sist men inte minst (jo, minst också faktiskt) min Filmtipset.se Javascript widget. Totalt använder mer än 46000 personer världen över mina program och widgets och jag känner att jag måste ta lite ansvar för den data jag lagrar på servern.

Dags för lite backup alltså.

Hemma kör jag en Apple iMac och den säkerhetskopieras med hjälp av det utmärkta backupprogrammet Mozy som lagrar filerna på en server i (tror jag) USA. Brinner min dator upp så kan jag alltid återställa mina filer via ett webbgränssnitt. Mozy känns alltså säkert och bra och därför tänkte jag använda mig av Mozy även för filerna jag har på min VPS.

Eftersom jag har Mozy på min iMac hemma så blir första steget att få över filerna från min VPS till min iMac. Min första tanke var att packa ihop allt på servern till ett zip-arkiv och sedan överföra arkivet en gång per dag. Efter lite funderande så kom jag fram till att det inte var så smart med tanke på hur mycket data som lagras på servern samt att jag endast har ett visst antal GB som jag får överföra till/från servern per månad. Så lite trafik som möjligt alltså. Lösningen blir därför rsync, ett fantastiskt litet program som kopierar allt från en mapp till en annan mapp, men vid upprepade körningar så är det smart och kopierar bara det som är ändrat. Detta sparar mycket bandbredd och innebär att en första kopiering kanske tar en halvtimme (för en GB data ungefär) medans följande kopiering tar några sekunder. Görbra!

Utan att gå in på allt för många tekniska detaljer så var det såhär jag till slut gjorde. Jag är rätt ny på Linux och jag är lite smånöjd att jag fick till det tillslut. Upptäcker ni några uppenbara säkerhetshåll så säg till! Värt att nämna är att jag kör Ubuntu 8 så här du en annan version av Linux kanske något skiljer sig.

På VPS:en

1. Installera rsync
2. Redigera/skapa /etc/rsyncd.conf så den ser ut såhär:

uid = root
gid = root
[www]
comment = Alla WWW-filer
path = /var/www/
auth users = rsyncuser
secrets file = /etc/rsyncd.secrets
strict modes = false

Detta gör att man kommer åt /var/www (där alla dokument till webbservern ligger) via rsync via  modulnamnet www. Vi bestämmer också att användaren rsyncuser får komma åt modulen.

3. Skapa filen /etc/rsyncd.secrets som innehåller användnamn och lösenord (skriv ett eget lösenord istället för ”hemligtlösenord”)

# username:password
rsyncuser:hemligtlösenord

4. Se till att rsync-daemon körs vid start. Redigera /etc/default/rsync och sätt RSYNC_ENABLE=true

5. Starta om servern för att starta rsync (eller kör rsync –daemon manuellt)

På datorn som ska ta emot filer från VPS:en

1. Skapa en fil, t.ex. doBackup.sh som kör rsync och skriver stndout och errout till filer. Såhär ser min ut:

#!/bin/bash
# hämta över allt i vps:ens backup-mapp till imacen
RSYNC_PASSWORD=hemligtlösenord
export RSYNC_PASSWORD
rsync -vaz rsync://rsyncuser@12.34.56.78/www/ \
/VPS/backup/www/ \
>/VPS/rsync.log \
2>/VPS/rsync.error

Detta gör att rsync kopierar alla filer och mappar på servern till en mapp på den lokala datorn. Ev. felmeddelanden hamnar i filen rsync.error och övrigt output (t.ex. vilka filer som kopierats) hamnar i rsync.log. Genom att använda variabeln RSYNC_PASSWORD slipper vi skriva in ett lösenord varje gång rsync körs. Och ska vi automatisera rsync att köra automatiskt några gånger per vecka eller dag så vill vi inte behöva skriva något lösenord. Du måste såklart också ange din servers ipnummer istället för 12.34.56.78

2. Starta terminalen och gör doBackup.sh körbar genom att skriva:

chmod +x doBackup.sh

3. Klart! Nu kan du köra doBackup.sh på valfritt sätt och alltid ha en fräsch backup av din webbservers www-filer.

(4. Vil du att skriptet ska köras automatiskt så måste du använda ett program som lägger till en konfigurationsfil till launchd. Jag använder Lingon (http://lingon.sourceforge.net/) för att skapa ett job som körs t.ex. en gång per dag.)


Publicerat

i

, , ,

av

Etiketter:

Kommentarer

4 svar till ”Ta backup på din VPS med hjälp av rsync”

  1. Profilbild för Måns

    Det där var ju jätteduktigt och intressant att läsa, men rätt komplicerat…?

    Långt mycket enklare är (väl) att köra rsync över SSH och bara generera en public key utan lösenord på mottagarsidan, så behöver man ingen rsync-daemon eller nåt – bara SSH på båda sidorna!

    Sen bara:
    rsync -vrup /data/jag/vill/kopiera user@min.mottagare.com:/sökväg/till/destination

    För att ansluta med SSH utan lösenord, se http://freebsd.peon.net/quickies/21/

  2. Profilbild för Pär
    Pär

    Måns: jag försökte först få det att funka via SSH men det var just biten med lösenordet som satte käppar i hjulet. Jag läste ett par sidor om just det och nån sida sa att det var heltokigt att skapa nycklar utan lösenord så då tänkte jag att jag skulle göra det mer ordentligt. Så då blev det den här lösningen. Vet inte om den är säkrare eller så egentligen (svagare kryptering vs. risken att nån får tag på nyckeln typ..) men jag lärde mig rätt mycket på vägen iaf!

  3. Profilbild för Måns

    Jag förstår. Jo, det är kanske helt vansinnigt att ha en nyckel utan lösenord, men samtidigt måste man ju komma åt den privata nyckeln för att kunna logga in, och så länge den ligger på en maskin man själv har kontroll över känns det väl säkert.

    Men det som är riktigt intressant är väl om det finns några andra fördelar med att köra rsync-daemonen? Finessen med rsync är ju att den kan göra inkrementella ändringar – funkar det bättre/annorlunda om man kör en ”äkta” daemon kanske?

    /M;

  4. Profilbild för Pär
    Pär

    En anledning jag hittade. Inte direkt därför jag körde som daemon, men ändå:
    ”The big advantage of running as a daemon will come when the planned directory cache system is implemented. The caching system will probably only be enable when running as a daemon. For this reason, busy sites is recommended to run rsync as a daemon”
    http://sunsite.dk/info/guides/rsync/rsync-mirroring02.html