Etikettarkiv: backup

Tarsnap – Backup för den paranoide

Tarsnap är en backuptjänst i molnet för den som är paranoid. Kryptering genomförs på klientsidan innan datan skickas upp till Amazon S3-tjänst. Tarsnap är utvecklat av Colin Percival som är övermänsklig, han har bl.a. utvecklat scrypt och är säkerhetschef för FreeBSD.

Tarsnap har inget GUI och stödjer operativsystem såsom Mac OS X, Ubuntu, FreeBSD osv. Stöd till Windows finnes via Cygwin.

Så kommer du igång med Tarsnap

Först och främst laddar du hem tarsnap till din server eller klient:

$ wget https://www.tarsnap.com/download/tarsnap-autoconf-1.0.35.tgz

Och verifierar sedan nedladdningen:

$ sha256 tarsnap-autoconf-1.0.35.tgz
SHA256 (tarsnap-autoconf-1.0.35.tgz) = 6c9f6756bc43bc225b842f7e3a0ec7204e0cf606e10559d27704e1cc33098c9a

Sedan installerar du eventuella beroenden som kan behövas. Detta är för Ubuntu:

$ sudo apt-get install libssl-dev zlib1g-dev e2fslibs-dev make

Vi extraherar tarsnap och bygger koden:

$ tar xvfz tarsnap-autoconf-1.0.35.tgz
$ cd tarsnap-autoconf-1.0.35/
$ ./configure && make
$ sudo make install

Och förhoppningsvis gick allt bra och tarsnap är installerat. Om du inte har något konto på tarsnap.com så är det läge att skapa det nu.

Nu skapar vi en nyckel för denna server och anger våra uppgifter som vi använde när vi skapade kontot på tarsnap.com:

$ tarsnap-keygen --keyfile /root/https-tarsnap.key --machine https.se --user [email protected]

Viktigt här är att du sparar undan nyckelfilen https-tarsnap.key på ett annat system än det du gör backup på. För förlorar du denna fil så kan du ej återskapa data från servern samt ser till att enbart användaren som gör backup får läsa denna nyckelfil.

Så gör du backup med Tarsnap

Finurligt så fungerar tarsnap precis som tar men med lite extra argument. Jag brukar skapa en fil vid namn backup.sh som även dumpar ut MySQL-databas så den följer med i backupen.

Så här ser min backup.sh ut som körs via cronjobb varje natt av root. Se även till att enbart root kan läsa filen backup.sh då den innehåller lösenord.

mysqldump -u root -plösenord https > /var/www/https.se/backup/`date +"%Y%m%d"`.sql
tarsnap --keyfile /root/https-tarsnap.key --cachedir /usr/local/tarsnap-cache -c -f https.se-`date +%F` /var/www/https.se/docs/ /var/www/https.se/backup/ /etc/nginx/sites-enabled/default-ssl /etc/nginx/sites-enabled/default 
tarsnap --cachedir /usr/local/tarsnap-cache --keyfile /root/https-tarsnap.key -d -f https.se-`date -d "2 days ago" +%F`

Den sista raden med tarsnap -d ser till att ta bort lagrade backuper som är äldre än två dagar. Du kan även behöva skapa katalogen /usr/local/tarsnap-cache/

Uppdatering: Kolla in denna gist som underlättar installationen.

GitHub.com för Git

Nyss så var jag lite för snabb i min favoriteditor VIM och råkade radera stora delar av min kod och avsluta. Det var som tur var bara några timmars arbete men som alla vet så är det otroligt trist att skriva om kod.

Ur detta lilla misstag så försöker jag lära mig något: Så därför skapade jag ett konto på GitHub.com och checkade in några av mina viktigaste kodträd på under 30 minuter.

TweetBackup börjar med premium-konton

Jag har nu lanserat premium-konton på TweetBackup. Detta är extra intressant eftersom jag aldrig gjort det tidigare på någon av mina tjänster men förhoppningsvis något som kommer att bli vanligare på de tjänster jag utvecklar.

Prissättningen är $6 för 6 månader och betalningen sker via PayPal (Subscribe) och de extra features som användare får är i dagsläget bl.a stöd för TwitPic/Yfrog samt så är en mängd begränsningar borttagna exempelvis möjlighet att arkivera mer än en hashtagg och fler än ett konto. Avsikten är även att lägga till 3-4 premium-features innan årets slut.

Än så länge så har jag inte gjort så mycket reklam för premium-konton men det kommer att komma och då tänkte jag även rapportera här på bloggen hur många som väljer att betala för tjänsten.

Gör du backup?

Då jag har flera servrar utplacerade runt om i Sverige så är backup något som är otroligt viktigt men som oftast är något som jag är lite dålig på att prioritera. Men! Så igår så hände något som gjorde att jag fick tummen ur och äntligen fick för mig att bygga en snabb och lätt backup-lösning som ser ut enligt följande:

1. Dator placerad i hemmet med mycket disk

2. Server

1. Förberedelse för överföring av backup-filer

Det jag då gör är att jag genererar SSH privata/publika nycklar på min dator som är placerad i hemmet och sedan tar den publika nyckeln och placerar denna i (2) Server’s ~/.ssh/authorized_keys enligt följande:

dator1$ ssh-keygen -t rsa

Detta kommando genererar två stycken nycklar, nämligen ~/.ssh/id_rsa.pub samt den privata nyckeln ~/.ssh/id_rsa. Ta nu nyckeln id_rsa.pub och stoppa den i dator2 (server) ~/.ssh/authorized_keys så ska det vara möjligt att göra ssh/scp utan att behöva ange lösenord vilket vi behöver i detta steg.

2. Skapande av backup-filer

Det förfarande jag brukar gå enligt är att jag skapar två rader i ett enkelt shellscript och sedan anropar detta shellscript en gång varje natt (dator2/server) med cron:

#!/bin/sh
/usr/bin/mysqldump --opt -u db -pdb db >  /home/je/backups/db_`date +"%F"`.sql
/bin/tar cfjp /home/je/backups/db_`date +"%F"`.tar.bz2 /var/www/website.se/docs /var/www/website.se/other

3. Överföring

Överföringen sker således med scp från dator1. Rsync över ssh kan också användas med fördel