Salattujen inkrementiaalisien varmuuskopioiden tekeminen

Duplicity on näppärä komentorivityökalu backuppien tekemiseen. Duplicity soveltuu niin ulkoiselle kiintolevylle kun toiselle koneelle ssh:n yli backuppaukseen. Sillä onnistuu myös increkentiaalisien backuppien tekeminen ja palauttaminen helposti.

Asentaminen

OS X

OS X:ssä duplicity on hepointa asentaa homebrewin avulla.

brew install duplicity

Duplicity löytyy toki myös portsista.

port install duplicity

Linux

Linuxissa duplicity löytyy pakettienhallinnasta.

sudo apt-get install duplicity

Käyttöönotto

Salausavain

Duplicity käyttää tiedostojen salaukseen PGP-salausta. Tätä varten luodaan aluksi käytettävä PGP-avain gpg-komentorivityökalulla.

gpg gpg --gen-key

Vastaa kysymyksiin 1 (RSA ja RSA), 4096 (bittinen avain), 0 (ei ekspiroidu), y (on oikein). Realname kohtaan voit laittaa vaikkapa "Koneennimi duplicity". Email address kenttään voit laittaa mitä tahansa, esim. duplicity@koneennimi. Kommentin voi jättää tyhjäksi. Sitten vain O kysyttäessä varmistusta. Salasana kannattaa tehdä suosiolla esimerkiksi pwgen komentorivityökalulla tarpeeksi pitkäksi, esim 64 merkkinen. Ota salasana toki talteen.

Ota talteen generoinnin pääteeksi tulostetuista riveistä pub-alkuinen rivi. Alla esimerkki.

pub   4096R/12345678 YYYY-MM-DD

Apuscripti

Duplicityn käyttö perustuu komentoriviargumentteihin. Jotta käyttö olisi helppoa on järkevää tehdä apuscripti.

#!/bin/bash

export PASSPHRASE="Aikaisemmin PGP-avaimelle luotu salasana tähän"
# gpg public key for encryption
KEY="12345678"
SOURCE="${HOME}/"
EXCLUDE_FILELIST="~/.exclude"
SSH_PRIVKEY="~/.ssh/id_rsa"
TARGET="scp://lakka.kapsi.fi/siilo/Duplicity"
OPTS="--ssh-options=-oIdentityFile=$SSH_PRIVKEY --encrypt-key=$KEY --exclude-filelist=$EXCLUDE_FILELIST"
OPTS="$OPTS --allow-source-mismatch --asynchronous-upload --full-if-older-than 2W"

ulimit -n 1024

# full or inc
if [ "$1" == "full" ]
then
	TYPE="full"
elif [ "$1" == "inc" ]
then
	TYPE="inc"
elif [ "$1" == "" ]
then
	TYPE="inc"
else
	echo "Invalid option $1"
	exit 1
fi

echo running $TYPE backup

duplicity $TYPE $OPTS "$SOURCE" "$TARGET"

duplicity remove-older-than 2M $OPTS "$TARGET" --force

Muokkaa scriptistä tarvittaessa palvelimen osoite (lakka.kapsi.fi) sekä polku (/siilo/Duplicity) oikeaksi sekä KEY aikaisemmin luoduksi avaimeksi "pub" riviltä. Ohje myös olettaa että sinulla on luotuna ssh-avain ~/.ssh/id_rsa.

Muista muokata scriptin oikeudet siten etteivät muut pääse lukemaan sitä. chmod 700 polku/scriptiin/duplicity.sh on hyvä.

Serveripään valmistelu

Kirjaudu serverille ssh:lla ja luo kansio johon backupit menevät. Edellisen scriptin tapauksessa siis
mkdir -p ~/siilo/Duplicity
chmod 700 ~/siilo/Duplicity

Muuta

Jos tahdot jättää joitain tiedostoja backuppautumasta, lisää ne tiedosto/kansio per rivi ~/.exclude tiedostoon.

Tahtoessasi voit myös säätää täysien backuppien tieyttä muuttamalla --full-if-older-than arvoa (2W).

Käyttö

Kaikki tarvittavat esivalmistelut on nyt tehty ja on aika ajaa duplicity ensimmäisen kerran. Ajaminen onnistuu seuraavasti:

polku/scriptiin/duplicity.sh full

Ajaminen kestää todennäköisesti ihan hyvän tovin.

Seuraavilla ajokerroilla ei ole pakko antaa full argumenttia sillä duplicity huolehtii itse että täysiä backuppeja ajetaan esimerkkiscriptin tapauksessa kerran kahdessa viikossa.

Jotta backupit tulisi säännöllisesti otettua kannattaa lisätä esimerkiksi crontabiin rivi joka ajaa scriptin vaikka kerran vuorokaudessa. Backup-scriptistä kun ei ole hirveästi hyötyä jos sitä ei ajeta säännöllisesti.

Hox! Jotta backuppien salauksen saa vielä auki vaikka käytetyn koneen tiedostot katoaisivatkin tulee aluksi luodun PGP-avaimen julkinen ja salainen osa tallentaa esimerkiksi backuppaukseen käytetylle palvelimelle tai kassakaappiin cd-levylle. Lisäksi salasana kannattaa kirjoittaa vaikkapa ihan paperilapulle ja jemmata kassakaappiin.