
INTRODUZIONE
– Restic è un’applicazione per la gestione di backup sia in locale che in cloud, che supporta la crittografazione (AES-256) e la deduplicazione dei dati, riducendo dunque in modo significativo lo spazio necessario per conservare i file bekappati.
Restic è già ad oggi compatibile con la maggior parte dei servizi cloud quali : “OpenStack Swift, bucket Amazon S3, Backblaze B2, Microsoft Azure Blob Storage, Google Cloud”, e sono presenti anche immagini Docker.
Restic è sviluppato in linguaggio GO, cosa che lo rende molto leggero ed efficiente, risolvendo anche molti problemi di gestione di dipendenze.
– INSTALLAZIONE
Esistono molti pacchetti di installazione per la maggior parte dei sistemi operativi, coprendo un range che va da Arch Linux a MacOS, fino ai sistemi *BSD/*NIX……
Per i sistemi più “standard” l’installazione è banale:
– Debian
apt-get install restic
– Fedora
dnf install restic
– MacOS
brew install restic
….. per tutti gli altri sistemi si possono trovare tutte le specifiche sul sito ufficiale di Restic (https://restic.readthedocs.io/en/latest/020_installation.html#stable-releases)
Una volta installato il pacchetto i comandi per l’utilizzo di Restic sono davvero semplici ed immediati.
Prima di tutto va inizializzato lo spazio che si decide di stanziare, dedicare, al backup, ricordandosi che Restic chiama la destinazione per i backup “repository” ( –repo oppure -r ).
Quindi per inizializzare la Directory prescelta per la gestione dei backup possiamo agire in 3 modi diversi:
- spostarci all’interno della DIR prescelta e dare il comando # restic init
- indicare il PATH dei backup # restic init –repo /mnt/data/<nome_utente>/backup/
- indicare un percorso di rete # restic -r sftp:<utente>@<indirizzo_IP>:/mnt/data/<nome_utente>/backup init
– COMANDI PRINCIPALI
- init
- backup
- ls
- restore
- snapshots
- tag
- copy
- stats
…….. e molti altri ancora che potete trovare sulla documentazione ufficiale, al sito restic-official-docu
Per poter automatizzare gli accessi ad aree esterne come, altri server, servizi cloud o altro, possiamo usare due metodi diversi;
1) creiamo un file .restic.env nel quale possiamo inserire i dati di accesso (es. ad AWS S3) , aggiungendo la password creata durante la fase di inizializzazione [“init“]
oppure
2) creiamo un file .rest_pass in cui inseriamo soltanto la password
– ESEMPI
Es. file di tipo ENV ( .restic.env )
#!/bin/bash
export RESTIC_REPOSITORY=” s3:https://s3.amazonaws.com/restic-backup-test “
export AWS_SECRET_ACCESS_KEY=”IVZ6GSBXEaZ1DeXzhN1gr4eCWcxD7hhMOt1RWMdn”
export RESTIC_PASSWORD=”<PASSWD>”
– Prima di lanciare i comandi per restic, in ambiente Cloud, eseguo il comando:
source .restic.env
per caricare le variabili d’ambiente indicate nel file .restic.env
Es. file di tipo PASSWD ( .rest_pass )
< password >
….quando si decide di usare il file .rest_pass basta indicarlo alla fine della stringa di comando, come ad esempio:
restic -r sftp:<utente>@<indirizzo_IP>:/home/<utente>/backup/database snapshots -p .rest_pass
– Esempi Pratici
INIZIALIZZO UNA DIRECTORY LOCALE
.\restic.exe init –repo C:\Users\User\Desktop\restic-repo
enter password for new repository:
enter password again:
created restic repository 80ee4591fd at C:\Users\User\Desktop\restic-repo
Please note that knowledge of your password is required to access the repository. Losing your password means that your data is irrecoverably lost.
Esegui il BACKUP
.\restic.exe backup -r C:\Users\User\Desktop\restic-repo E:\TEST1.txt
enter password for repository:
repository 80ee4591 opened successfully, password is correct
created new cache in C:\Users\User\AppData\Local\restic
Files: 1 new, 0 changed, 0 unmodified
Dirs: 1 new, 0 changed, 0 unmodified
Added to the repo: 467 B
processed 1 files, 0 B in 0:00
snapshot 0161a85c saved
Vedere la lista degli snapshot effettuati
.\restic.exe snapshots -r C:\Users\User\Desktop\restic-repo
enter password for repository:
repository 80ee4591 opened successfully, password is correct
ID Time Host Tags Paths
0161a85c 2021-08-05 13:08:45 Windows10 E:\TEST1.txt
1 snapshots
Vedere la lista dei files di una snapshot:
.\restic.exe ls -l -r C:\Users\User\Desktop\restic-repo 0161a85c
enter password for repository:
repository 80ee4591 opened successfully, password is correct
snapshot 0161a85c of [E:\TEST1.txt] filtered by [] at 2021-08-05 13:08:45.8317433 +0200 CEST):
drwxrwxrwx 0 0 0 1979-12-31 23:00:00 /E
-rw-rw-rw- 0 0 0 2021-08-05 13:07:20 /E/TEST1.txt
Esegui il Restore
Per effettuare un test reale, ho cancellato il file E:\TEST1.txt
.\restic.exe restore 0161a85c -r C:\Users\User\Desktop\restic-repo –target E:\restore
enter password for repository:
repository 80ee4591 opened successfully, password is correct
restoring to E:\restore
….così facendo ho recuperato la copia di backup facendone il restore sul disco E:\restore
$ ls -l E:\restore
Directory: E:\restore
Mode LastWrite Time Length Name
—- ————- —— —-
d—– 31/12/1979 23:00 0 TEST1.txt
Elimina gli snapshot
.\restic.exe forget –prune 0161a85c -r C:\Users\User\Desktop\restic-repo
enter password for repository:
repository 80ee4591 opened successfully, password is correct
[0:00] 100.00% 1 / 1 files deleted
1 snapshots have been removed, running prune
loading indexes…
loading all snapshots…
finding data that is still in use for 0 snapshots
[0:00] 0 snapshots
searching used packs…
collecting packs for deletion and repacking
[0:00] 100.00% 1 / 1 packs processed
to repack: 0 blobs / 0 B
this removes 0 blobs / 0 B
to delete: 2 blobs / 531 B
total prune: 2 blobs / 531 B
remaining: 0 blobs / 0 B
unused size after prune: 0 B ( of remaining size)
rebuilding index
[0:00] 0 packs processed
deleting obsolete index files
[0:00] 100.00% 1 / 1 files deleted
removing 1 old packs
[0:00] 100.00% 1 / 1 files deleted
done
N.B.: bisogna ricordarsi che, nel caso stessimo agendo sull’eliminazione di un backup/snapshot in ambiente cloud, tipo Amazon Bucket S3, prima del comando di forget –prune bisognerà dare un “restic unlock <ID dello snapshot>“
Auto Pulizia
.\restic.exe forget –prune –keep-daily 7 –keep-monthly 12 –keep-yearly 3 -r C:\Users\User\Desktop\restic-repo
enter password for repository:
repository 80ee4591 opened successfully, password is correct
Applying Policy: keep 7 daily, 12 monthly, 3 yearly snapshots
Aggiorna la versione
Prima di tutto verifichiamo quale versione abbiamo al momento:
.\restic.exe version
restic 0.12.0 compiled with go1.15.8 on windows/amd64
oppure
$ restic version
restic 0.12.0 compiled with go1.15.8 on linux/amd64
Sulla macchina ArchLinux la versione è già l’ultima disponibile al momento (5 Agosto 2021) quindi non eseguiremo l’aggiornamento ma, ricordate che in caso di macchine nascoste da un Firewall a cui è vietato fare download di pacchetti si può comunque scaricare su di un’altra macchina l’ultima versione del software dal repository ufficiale su github , scompattarlo e sostituire il nuovo “restic” direttamente in /usr/bin
RESTIC Last Version Binaries Page
Es. :
bunzip2 restic_0.12.0_linux_amd64.bz2
mv restic_0.12.0_linux_amd64.bz2 restic
chmod +x restic
mv restic /usr/bin/
restic self-update
L’invito è quello di leggere la documentazione ufficiale poichè è davvero ricca di esempi, spiegazioni e modi di utilizzare questo fantastico strumento, ultra flessibile e davvero performante.