Duplicity – Lag krypterte inkrementelle sikkerhetskopier i Linux


Erfaring viser at du aldri kan bli for paranoid når det gjelder sikkerhetskopiering av systemet. Når det gjelder å beskytte og bevare dyrebare data, er det best å gå den ekstra milen og sørge for at du kan stole på sikkerhetskopiene dine hvis behovet oppstår.

Selv i dag, når noen backup-strategi bruker dine egne verktøy for å spare penger og deretter kanskje bruke den til å kjøpe ekstra lagringsplass eller få en større VPS.

[Du vil kanskje også like: 25 fremragende sikkerhetskopieringsverktøy for Linux-systemer ]

Høres interessant ut? I denne artikkelen vil vi vise deg hvordan du bruker et verktøy kalt Duplicity for å sikkerhetskopiere og kryptere filer og kataloger. I tillegg vil bruk av inkrementelle sikkerhetskopier for denne oppgaven hjelpe oss å spare plass.

Når det er sagt, la oss komme i gang.

Installere Duplicity Backup Tool i Linux

For å installere duplisitet i RHEL-baserte distroer, må du først aktivere EPEL-depotet (du kan utelate dette trinnet hvis du bruker selve Fedora):

# yum update 
# yum install epel-release
OR
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Så løp,

# yum install duplicity

For Debian og derivater:

$ sudo apt update 
$ sudo apt install duplicity

I teorien støttes mange metoder for å koble til en filserver, selv om kun ftp, HSI, WebDAV og Amazon S3 har blitt testet i praksis så langt.

Når installasjonen er fullført, vil vi utelukkende bruke sftp i ulike scenarier, både for å sikkerhetskopiere og gjenopprette dataene.

Testmiljøet vårt består av en RHEL 8-boks (som skal sikkerhetskopieres) og en Debian 11-maskin (sikkerhetskopiserver).

Opprette SSH-nøkler for passordløs pålogging til ekstern server

La oss begynne med å lage SSH-nøklene i RHEL-boksen vår og overføre dem til Debians backupserver.

Hvis du kjører SSH på en annen port, antar kommandoen nedenfor at sshd-demonen lytter på port XXXXX på Debian-serveren. Erstatt AAA.BBB.CCC.DDD med den faktiske IP-en til den eksterne serveren.

# ssh-keygen -t rsa
# ssh-copy-id [email 
# ssh-copy-id -p XXXXX [email   

Da bør du sørge for at du kan koble til backupserveren uten å bruke passord:

# ssh [email 

Nå må vi lage GPG-nøklene som skal brukes til kryptering og dekryptering av dataene våre:

# gpg2 --full-gen-key

Du vil bli bedt om å angi:

  • Slags nøkkel
  • Nøkkelstørrelse
  • Hvor lenge nøkkelen skal være gyldig
  • En passordfrase

For å lage entropien som trengs for å lage nøklene, kan du logge på serveren via et annet terminalvindu og utføre noen få oppgaver eller kjøre noen kommandoer for å generere entropi (ellers må du vente lenge på denne delen av prosessen for å fullføre).

Når nøklene er generert, kan du liste dem opp som følger:

# gpg --list-keys

Strengen uthevet i gult ovenfor er kjent som den offentlige nøkkel-IDen, og er et forespurt argument for å kryptere filene dine.

Opprette en Linux-sikkerhetskopi med duplicity

For å starte enkelt, la oss bare sikkerhetskopiere /var/log-katalogen, med unntak av /var/log/anaconda og /var/log/sa.

Siden dette er vår første sikkerhetskopi, vil den være en fullstendig. Påfølgende kjøringer vil lage inkrementelle sikkerhetskopier (med mindre vi legger til hele alternativet uten bindestreker rett ved siden av duplisitet i kommandoen nedenfor):

# PASSPHRASE="tecmint" duplicity --encrypt-key 115B4BB13BC768B8B2704E5663C429C3DB8BAD3B --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email //backups/rhel8
OR
# PASSPHRASE="YourPassphraseHere" duplicity --encrypt-key YourPublicKeyIdHere --exclude /var/log/anaconda --exclude /var/log/sa /var/log scp://[email :XXXXX//backups/rhel8

Pass på at du ikke går glipp av den doble skråstreken i kommandoen ovenfor! De brukes til å indikere en absolutt bane til en katalog som heter /backups/rhel8 i sikkerhetskopiboksen, og det er der backupfilene vil bli lagret.

Erstatt YourPassphraseHere, YourPublicKeyIdHere og RemoteServer med passordfrasen du skrev inn tidligere, den offentlige GPG-nøkkel-IDen og med IP-en eller vertsnavnet til backupserveren.

Utdataene dine skal ligne på følgende bilde:

Bildet ovenfor indikerer at totalt 86,3 MB ble sikkerhetskopiert til en 3,22 MB på destinasjonen. La oss bytte til backupserveren for å sjekke vår nyopprettede backup:

En andre kjøring av den samme kommandoen gir en mye mindre sikkerhetskopistørrelse og -tid:

Gjenopprette Linux-sikkerhetskopier ved hjelp av Duplicity

For å kunne gjenopprette en fil, en katalog med innholdet eller hele sikkerhetskopien, må ikke destinasjonen eksistere (duplisitet vil ikke overskrive en eksisterende fil eller katalog). For å avklare, la oss slette cron-loggen i CentOS-boksen:

# rm -f /var/log/cron

Syntaksen for å gjenopprette en enkelt fil fra den eksterne serveren er:

# PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore filename sftp://[email //backups/rhel8 /where/to/restore/filename

hvor,

  • filnavn er filen som skal pakkes ut, med en relativ bane til katalogen som ble sikkerhetskopiert
  • /where/to/restore er katalogen i det lokale systemet vi ønsker å gjenopprette filen til.

I vårt tilfelle, for å gjenopprette cron-hovedloggen fra den eksterne sikkerhetskopien, må vi kjøre:

# PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore cron sftp://[email :XXXXX//backups/rhel8 /var/log/cron

Cron-loggen skal gjenopprettes til ønsket destinasjon.

På samme måte kan du gjerne slette en katalog fra /var/log og gjenopprette den ved å bruke sikkerhetskopien:

# rm -rf /var/log/mail
# PASSPHRASE="YourPassphraseHere" duplicity --file-to-restore mail sftp://[email :XXXXX//backups/rhel8 /var/log/mail

I dette eksemplet skal e-postkatalogen gjenopprettes til sin opprinnelige plassering med alt innholdet.

Andre funksjoner i Duplicity

Du kan når som helst vise listen over arkiverte filer med følgende kommando:

# duplicity list-current-files sftp://[email :XXXXX//backups/rhel8

Slett sikkerhetskopier som er eldre enn 6 måneder:

# duplicity remove-older-than 6M sftp://[email :XXXXX//backups/rhel8

Gjenopprett min fil i gacanepa-katalogen slik den var for 2 dager og 12 timer siden:

# duplicity -t 2D12h --file-to-restore gacanepa/myfile sftp://[email :XXXXX//remotedir/backups /home/gacanepa/myfile

I den siste kommandoen kan vi se et eksempel på bruken av tidsintervallet (som spesifisert av -t): en serie med par der hver består av et tall etterfulgt av et av tegnene s, m, h, D, W, M eller Y (angir henholdsvis sekunder, minutter, timer, dager, uker, måneder eller år).

Sammendrag

I denne artikkelen har vi forklart hvordan du bruker Duplicity, et sikkerhetskopieringsverktøy som gir kryptering av filer og kataloger rett ut av esken. Jeg anbefaler på det sterkeste at du tar en titt på duplicity-prosjektets nettside for ytterligere dokumentasjon og eksempler.

Vi har gitt en man-side med duplisitet i PDF-format for å gjøre det enklere å lese, og er også en komplett referanseguide.

Gi oss gjerne beskjed hvis du har spørsmål eller kommentarer.