Panoramica
Sebbene Vultr disponga di un sistema di backup per le immagini dell'intero sistema, funziona a livello di blocco e richiede che il backup venga ripristinato su una macchina virtuale prima che i dati possano essere ripristinati. Inoltre, i backup vengono archiviati solo per un breve periodo di tempo e non forniscono una vera soluzione di backup incrementale.
Inserisci duplicità: Duplicity si basa sul leggendario rsync e offre la possibilità di archiviare backup incrementali insieme alla crittografia dei dati a riposo tramite GPG. È conforme a Posix e trasferisce solo i delta tra le esecuzioni di backup, riducendo così il requisito generale di larghezza di banda.
Impostazione dell'ambiente
Terminologia
- Host di origine: server per il backup dei dati. Per questa esercitazione, ha l'indirizzo IP: 10.1.10.1
- Host di backup: server di destinazione per i backup. Per questa esercitazione, ha l'indirizzo IP: 10.1.10.2
- / backupdir: directory di origine sull'host di origine utilizzata per i backup in questa esercitazione. Puoi cambiarlo per adattarlo al tuo ambiente.
- / destdir: directory di destinazione sull'host di backup utilizzata per i backup in questa esercitazione. Puoi cambiarlo per adattarlo al tuo ambiente.
- Backup completo: copia completa del set di dati di origine.
- Backup incrementale: copia di tutte le modifiche apportate dall'ultimo backup.
Installazione di Duplicity
Ubuntu 14.04:
sudo apt-get update
sudo apt-get install duplicity python-paramiko
CentOS (richiede EPEL):
sudo yum install duplicity python-paramiko
Ubuntu 12.04 / Debian 7:
sudo apt-get update
sudo apt-get install ncftp python-paramiko python-pycryptopp lftp python-boto python-dev librsync-dev
wget https://launchpad.net/duplicity/0.7-series/0.7.02/+download/duplicity-0.7.02.tar.gz
tar xzvf duplicity*
cd duplicity*
sudo python setup.py install
Dobbiamo installarlo dal sorgente poiché il pacchetto Duplicity in Debian 7 e Ubuntu 12.04 sono interrotti a causa di un cambiamento nella libreria SSH back-end.
Ricontrolla che Duplicity sia installato eseguendo:
duplicity -v
Dovrebbe restituire il seguente output (la versione potrebbe essere diversa):
duplicity 0.6.18
Impostazione dell'autenticazione senza chiave per SSH
Il passaggio successivo consiste nell'impostare l'autenticazione basata su certificato per SSH tra l'host di backup e l'host di origine. Ciò consentirà al server di origine di SSH nell'host di backup senza digitare una passphrase. Vultr ha un ottimo articolo che spiega come fare: Come posso generare chiavi SSH .
I backup
Esecuzione del primo backup (completo)
Eseguiamo un backup completo! Questo invierà una copia completa dei dati dal server di origine alla destinazione.
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
È possibile aggiungere ulteriori cartelle includendo più --include="[dir]"
istruzioni.
I --no-encryption
specifica che i dati non è quello di essere crittografati a destinazione. I dati verranno crittografati durante il trasporto mentre passa attraverso il tunnel SSH.
L' --exclude="**" /
opzione è un trucco per eseguire il backup di tutto ciò che è solo nell'elenco di inclusione (e nient'altro).
Esecuzione di backup incrementale
L'esecuzione di un backup incrementale è molto semplice: basta cambiare il full
flag in incremental
flag.
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Automazione
Scrivi script automatici
Dover eseguire questi comandi ogni volta che è necessario un backup è un trascinamento: e se avessimo degli script per gestirlo per noi?
Script di backup completo
Esegui il comando
nano /usr/local/bin/backup-full
Aggiungi il seguente contenuto.
#!/bin/bash
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Script di backup incrementale
nano /usr/local/bin/backup-incremental
Aggiungi il seguente contenuto.
#!/bin/bash
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Rendi eseguibili gli script
Per rendere eseguibili gli script, eseguire il comando seguente.
chmod +x /usr/local/bin/backup-*
Ora puoi eseguire un backup eseguendo backup-full
e backup-incremental
dall'interno della shell. Abbastanza bello!
Setup cron
Rendiamo i backup automatici! Impostando cron per eseguire gli script sopra indicati in momenti specifici, possiamo assicurarci che i backup vengano eseguiti a intervalli regolari.
Esegui il seguente comando.
crontab -e
Aggiungi quanto segue in fondo al file.
10 01 * * 1,2,3,4,5,6 backup-incremental
10 01 * * 7 backup-full
Questo eseguirà un backup completo ogni domenica all'1: 10 AM e eseguirà backup incrementali a giorni alterni anche all'1: 10 AM.
Restauro
Godzilla ha distrutto Seattle e dobbiamo essere in grado di recuperare i dati dal backup VPS a New York!
duplicity --no-encryption --file-to-restore / ssh://user@backupserver:22/destdir/
Se è necessario ripristinare i dati di 3 giorni fa:
duplicity --no-encryption -t 3D --file-to-restore / ssh://user@backupserver:22/destdir/
L' -t 3D
opzione significa ripristinare un backup di tre giorni fa. Opzioni simili come -t 1M
(per un mese fa) o -t 5H
(per 5 ore fa) funzionano anche.