Oversikt
Sette opp miljø
Sikkerhetskopier
Automasjon
Restaurering
Oversikt
Mens Vultr har et sikkerhetskopisystem for hele systembilder, fungerer dette på blokknivå, og krever at sikkerhetskopien gjenopprettes til en VM før dataene kan gjenopprettes. I tillegg lagres sikkerhetskopier bare i en kort periode, og gir ikke en ekte inkrementell sikkerhetskopiløsning.
Enter Duplicity - Duplicity bygger på den legendariske rsync og gir muligheten til å lagre inkrementelle sikkerhetskopier sammen med kryptering av data i hvile via GPG. Den er Posix-kompatibel, og overfører bare deltaer mellom sikkerhetskopiering, og reduserer dermed det totale båndbreddekravet.
Sette opp miljø
Terminologi
- Kildevert - Server som vil ha sikkerhetskopiert data. For denne opplæringen har den IP-adressen: 10.1.10.1
- Backup host - Destinasjonsserver for sikkerhetskopiering. For denne opplæringen har den IP-adressen: 10.1.10.2
- /backupdir - Kildekatalog på kildevert som brukes til sikkerhetskopiering i denne opplæringen. Du kan endre dette for å matche miljøet ditt.
- /destdir - Destinasjonskatalog på verten for sikkerhetskopiering som brukes til sikkerhetskopiering i denne opplæringen. Du kan endre dette for å matche miljøet ditt.
- Full backup - Hele kopien av kildedatasettet.
- Inkrementell sikkerhetskopi - Kopi av alle endringene som er gjort siden siste sikkerhetskopiering.
Installerer Duplicity
Ubuntu 14.04:
sudo apt-get update
sudo apt-get install duplicity python-paramiko
CentOS (krever 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
Vi må installere fra kilden da Duplicity-pakken i Debian 7 og Ubuntu 12.04 er ødelagt på grunn av en endring i backend-SSH-biblioteket.
Dobbeltsjekk at Duplicity er installert ved å kjøre:
duplicity -v
Den skal returnere følgende utgang (versjonen kan være annerledes):
duplicity 0.6.18
Sette opp nøkkelfri autentisering for SSH
Det neste trinnet er å sette opp sertifikatbasert autentisering for SSH mellom sikkerhetskopiverten og kildeverten. Dette vil gjøre det mulig for kildeserveren å SSH inn i backupverten uten å skrive inn en passordfrase. Vultr har en flott artikkel som forklarer hvordan du gjør dette: How Do I Generate SSH Keys .
Sikkerhetskopier
Kjører den første (fullstendige) sikkerhetskopien
La oss kjøre en full backup! Dette vil sende en fullstendig kopi av data fra kildeserveren til destinasjonen.
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Du kan legge til flere mapper ved å inkludere flere --include="[dir]"uttalelser.
Den --no-encryptionspesifiserer at dataene ikke skal krypteres på destinasjonen. Data vil bli kryptert under transport når de passerer gjennom SSH-tunnelen.
Det --exclude="**" /alternativet er et triks for å sikkerhetskopiere alt som er bare i omfatter listen (og ingenting annet).
Kjører inkrementell sikkerhetskopiering
Å kjøre en inkrementell sikkerhetskopi er veldig enkelt - bare endre fullflagget til incrementalflagget.
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Automasjon
Skriv automatiserte skript
Å måtte kjøre disse kommandoene hver gang du trenger en sikkerhetskopi er en dra - hva om vi hadde skript for å håndtere det for oss?
Full backup script
Kjør kommandoen.
nano /usr/local/bin/backup-full
Legg til følgende innhold.
#!/bin/bash
duplicity full -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Inkrementelt sikkerhetskopieringsskript
nano /usr/local/bin/backup-incremental
Legg til følgende innhold.
#!/bin/bash
duplicity incremental -v --no-encryption --include="/sourcedir/" --exclude="**" / ssh://user@backupserver:22/destdir/
Gjør skript kjørbare
For å gjøre skriptene kjørbare, kjør følgende kommando.
chmod +x /usr/local/bin/backup-*
Nå kan du utføre en sikkerhetskopi ved å kjøre backup-fullog backup-incrementalfra skallet. Ganske kult!
Oppsett cron
La oss gjøre sikkerhetskopiene automatiske! Ved å sette opp cron for å kjøre skriptene ovenfor til spesifiserte tider, kan vi sørge for at sikkerhetskopiering utføres med jevne mellomrom.
Kjør følgende kommando.
crontab -e
Legg til følgende nederst i filen.
10 01 * * 1,2,3,4,5,6 backup-incremental
10 01 * * 7 backup-full
Dette vil kjøre en full sikkerhetskopi hver søndag kl. 01.10, og vil også kjøre inkrementelle sikkerhetskopier annenhver dag kl. 01.10.
Restaurering
Godzilla har ødelagt Seattle og vi må kunne få tilbake dataene fra backup-VPSen i New York!
duplicity --no-encryption --file-to-restore / ssh://user@backupserver:22/destdir/
Hvis vi trenger å gjenopprette data fra 3 dager siden:
duplicity --no-encryption -t 3D --file-to-restore / ssh://user@backupserver:22/destdir/
De -t 3Dalternativet betyr gjenopprette en sikkerhetskopi fra tre dager siden. Lignende alternativer som -t 1M(for en måned siden) eller -t 5H(for 5 timer siden) fungerer også.