- Restic offre backup crittografati, deduplicati e multipiattaforma, ideali per Linux e altri sistemi.
- Consente di salvare i backup su dischi e server locali. SSH e cloud di tipo S3, con policy di conservazione flessibili.
- Il suo utilizzo per riga di comandi Facilita l'automazione con script e cron, sia sui server che sui dispositivi. Android.
- Include strumenti per verificare l'integrità e ripristinare i dati in modo granulare dagli snapshot.
Se usi Linux quotidianamente, prima o poi avrai bisogno di un sistema di backup che sia Affidabile, veloce e facile da ripristinareRestic si è guadagnato questa reputazione: è facile da usare, crittografa tutto ciò che memorizza e funziona altrettanto bene su un laptop domestico quanto su un server cloud.
Nelle righe seguenti vedrai come impostare un sistema di backup con Restic su Linux che ti consente di effettuare copie crittografato, automatico e verificatoPuò essere su un disco locale, su un altro server tramite SSH o su servizi cloud compatibili (S3, Backblaze B2, Azure, ecc.). L'idea è che, una volta configurato tutto, è sufficiente ricordarsi di controllare occasionalmente di poter ripristinare i dati.
Cos'è Resti e perché è utile in Linux?
Resty è un programma di backup open source che si concentra sull'essere veloce, sicuro ed efficienteÈ scritto in Go e distribuito come un singolo binario, quindi non è necessario distribuire server o configurare architetture complesse: lo si esegue ovunque si memorizzino dati o ovunque si vogliano conservare i backup, e il gioco è fatto.
Uno dei suoi maggiori punti di forza è che è multipiattaformaPuoi usare Restic su Linux, BSD, macOS, Windows e anche su architetture come ARM (ad esempio, su un Raspberry Pi). Ciò significa che con lo stesso strumento puoi unificare i backup di tutti i tuoi dispositivi.
Resty si basa su due concetti chiave: il repository e snapshotIl repository è il luogo in cui vengono archiviate le informazioni (localmente, in remoto o nel cloud) e gli snapshot rappresentano lo stato dei dati in un momento specifico. Ogni volta che si avvia un di riservaResty crea un nuovo snapshot contenente solo le modifiche rispetto a quelli precedenti.
Per proteggere le informazioni, Restic crittografa tutti i dati del repository con Autenticazione AES-256 e Poly1305-AESNessun file viene memorizzato in formato testo normale: anche se qualcuno accedesse al repository, senza la password non potrebbe leggere nulla.
Un altro punto di forza è la deduplicazione. Quando si esegue nuovamente una copia, Restic rileva i blocchi esistenti Carica o salva solo ciò che è effettivamente cambiato. Il risultato: meno tempo di backup e molto meno spazio utilizzato, anche se si eseguono backup completi frequentemente.
Vantaggi pratici di Restic per i tuoi backup
Oltre agli aspetti tecnici, la facilità d'uso di Restic è un vero vantaggio nella vita di tutti i giorni. Essendo uno strumento da riga di comando, è perfetto per... Automatizzare i backup sui server senza un ambiente grafico oppure integrarlo con script, cron, timer systemd, ecc.
Puoi archiviare le copie quasi ovunque: a directory locale, un disco USBun server SSH/SFTP o cloud di tipo S3 come Amazon S3, MinIO, Backblaze B2, Wasabi, Google Cloud Storage, OpenStack Swift o Azure Blob Storage. Puoi anche usare rclone per aggiungere ancora più backend.
Un altro vantaggio molto utile è che puoi esplorare il contenuto di uno snapshot senza ripristinarlo completamente.Attraverso comandi come restic mount o elenchi di file, è facile individuare un file specifico e recuperarlo senza dover ripristinare l'intero backup.
Il processo di ripristino è abbastanza semplice: con un singolo comando è possibile recuperare una directory, un file o un'intera copia nel percorso che preferisci. E se vuoi, puoi montare il repository in modalità di sola lettura per esplorare i dati come se fosse un altro file system.
Infine, Resty include comandi per Verificare l'integrità delle copie, eliminare i vecchi dati e applicare criteri di conservazione (per numero di copie, per età, per tag, ecc.), qualcosa di essenziale quando il repository inizia a crescere.
Installazione di Restic su Linux (e mantenimento dell'aggiornamento)
Il modo più semplice per installare Restic sulla maggior parte delle distribuzioni Linux è quello di estrarre il gestore di pacchetti del tuo sistema. Su Debian, Ubuntu e derivati puoi usare:
sudo apt install restic
In altre distribuzioni, i comandi usuali sarebbero simili a questi, che servono come riferimento rapido per vedere come funziona in diversi ambienti GNU / Linux:
sudo dnf install resticsu Fedora, RHEL, CentOS, Rocky o AlmaLinuxsudo pacman -S resticsu Arch Linuxsudo zypper install resticin openSUSEsudo apk add resticin alpinosudo emerge -a sys-apps/resticin Gentoo
È anche possibile installare Resti dal codice sorgente o tramite container. Ad esempio, in Docker, è sufficiente scaricare l'immagine ufficiale con un semplice comando. tiro del docker:
docker pull restic/restic
Se preferisci compilarlo, devi prima installare Go, quindi clonare il repository ed eseguire il comando copione di costruzione. Questo ti consente anche generare binari per altre piattaforme (Windows, FreeBSD, Linux ARM, ecc.):
git clone https://github.com/restic/restic
cd restic
go run build.go
La compilazione per altri sistemi è semplice come specificare il sistema di destinazione nel comando, il che è molto pratico quando si hanno ambienti eterogenei e si desidera utilizzare lo stesso motore di backup in tutti.
Se hai installato Restic dai repository della tua distribuzione, potresti non avere l'ultima versione stabile. Il programma stesso offre un comando per aggiorna automaticamente il binario da GitHub, mantenendo tutto aggiornato senza interrompere il flusso di lavoro:
sudo restic self-update
Questo comando scarica l'ultima versione, verifica la firma GPG e sostituisce il vecchio binario, quindi in pochi secondi hai Restic aggiornato all'ultima versione nel tuo sistema.
Creare e proteggere il repository di backup
Prima di effettuare la prima copia, è necessario creare il repository in cui verranno archiviati i dati. In uno scenario tipico, si potrebbe avere un Server VPS o computer remoto che fungerà da server di copia.
Ad esempio, sul server che memorizzerà i backup, puoi creare una directory dedicata, qualcosa di semplice come:
mkdir /home/ubuntu/rpi4_bk
Una volta ottenuto il percorso, inizializza il repository con il comando init e l'opzione -r per indicare dove verranno archiviati i dati:
restic -r /home/ubuntu/rpi4_bk init
Il programma ti chiederà una password per il repository. È fondamentale che questa chiave sia robusto e conservalo molto benePerché senza di essa, il contenuto del repository non è recuperabile. Ogni operazione che comporti la lettura o la modifica dei dati (backup, ripristini, creazione di snapshot, verifica dell'integrità, ecc.) richiederà questa password o un file di password.
Se invece di una directory locale si utilizza un immagazzinamento Per l'accesso remoto, la procedura è simile, ma il percorso del repository punta, ad esempio, a un backend SFTP o a un URL S3. La cosa importante da capire è che il repository è il contenitore crittografato in cui sono archiviati tutti i dati. snapshot di backup.
Impostazione di un utente dedicato e dei permessi in Linux
Sulle macchine Linux in cui si desidera effettuare una copia dell'intero sistema, si verifica un problema ricorrente: con un utente normale non è possibile leggere file di proprietà di radice né aree riservate. La soluzione più diretta sarebbe quella di eseguire Resti come root, ma è possibile optare per un approccio più raffinato.
Uno schema molto interessante prevede la creazione di un utente senza privilegi amministrativi, ad esempio chiamato restoe regolare i permessi in modo che l'utente possa leggere tutti i dati necessari senza essere root:
sudo useradd -m restic
sudo passwd restic
Successivamente, la proprietà e i permessi del binario Resti vengono modificati in modo che solo root e l'utente restic possano eseguirlo, rafforzando la sicurezza dello strumento sul sistema:
sudo chown root:restic /usr/bin/restic
sudo chmod 750 /usr/bin/restic
Il passaggio chiave è applicare una capacità speciale al binario con setcapin modo che possa leggere l'intero sistema indipendentemente dai permessi dei file. La capacità è utilizzata cap_dac_read_search=+epche consente a Resti di attraversare le directory e leggerle come se fosse root, ma senza dover eseguire il comando come root:
sudo setcap cap_dac_read_search=+ep /usr/bin/restic
Con questa configurazione, quando esegui backup utilizzando l'utente restic sarai in grado di eseguire il backup assoluto di tutti i file del sistema, rispettando una separazione dei privilegi più sicura rispetto all'esecuzione sempre come root.
Accesso remoto al server di backup tramite SSH
Se i backup vengono inviati a un server remoto tramite SFTP/SSH, l'utente che esegue Restic sul client (ad esempio, l'utente resti di un Raspberry Pi) dovrebbe essere possibile connettersi senza dover immettere ogni volta la password.
Per questo viene creata una cartella. .ssh nella tua directory home e al suo interno una sottodirectory in cui memorizzerai la chiave privata utilizzata per l'autenticazione con il server di backup. L'intero processo può essere eseguito con semplici comandi: creare directory, generare o copiare la chiave e modificare i permessi in modo che solo l'utente restic possa leggerla.
La chiave privata è memorizzata in un file, ad esempio ubuntu_server, a cui vengono assegnati i permessi 0400 e la proprietà dell'utente restic. Ciò garantisce che la chiave sia protetto e accessibile solo all'utente che ne ha bisogno:
chown restic:restic ubuntu_server
chmod 0400 ubuntu_server
Per semplificare l'uso della chiave, il file è configurato ~/.ssh/config dall'utente restic che indica un alias host (ad esempio vps2), l'IP o il nome del server, la porta SSH, il nome utente remoto e il percorso della chiave privata. In questo modo, quando Restic utilizza il backend SFTP con sftp:vps2:/percorsoUtilizzerà automaticamente quella configurazione.
Una volta fatto questo, l'utente restic sulla macchina client può connettersi al server di copia senza password, consentendogli di I backup automatici funzionano senza intervento umana.
Definisci cosa è incluso e cosa è escluso nelle copie
Per avere un controllo preciso su ciò che viene incluso nel backup, è comune utilizzare due file di testo: uno con ciò che si desidera includere e un altro con ciò che si desidera escludere. Resty supporta questa funzionalità tramite le sue opzioni. –file-da y –escludi-file.
Ad esempio, nella directory home dell'utente restic è possibile creare una cartella ~/restic e all'interno di un file files_to_backup.txt dove le directory sono elencate come / Home / pi e altre rotte importanti:
/home/pi
/media/nextcloud/twitter
/media/nextcloud/podcast
/media/nextcloud/services/jellyfin/
Parallelamente, un files_to_exclude.txt Questa sezione descrive i percorsi di cui non si desidera eseguire il backup (ad esempio, una directory video molto grande) o modelli come tutti i file con una determinata estensione. Grazie a questo, è possibile perfezionare le dimensioni e la pertinenza delle copie:
/home/pi/videos
*.txt
Combinando entrambi i file, ti assicuri che la copia includa tutto ciò che ti interessa (come la directory home completa e alcune cartelle di un servizio come Nextcloud o Jellyfin) ed escluda ciò che non contribuisce molto o che può essere facilmente rigenerato.
Eseguire un backup manuale con Restic
Una volta che hai un repository, un utente dedicato, una connessione SSH e gli elenchi di inclusione/esclusione, sei pronto per eseguire il tuo primo backup manuale. Questo è ottimo per Verificare che tutto funzioni correttamente prima di automatizzare. nada.
Un comando tipico, se il repository si trova su un server SFTP accessibile come vps2 e il percorso di destinazione è /home/ubuntu/rpi4_bk/Sarebbe qualcosa del tipo:
sudo -u restic restic -r sftp:vps2:/home/ubuntu/rpi4_bk/ backup \
--tag raspberry --tag docker \
-v --exclude-file=/home/restic/restic/files_to_exclude.txt \
--files-from=/home/restic/restic/files_to_backup.txt
È usato sudo -u restic Per eseguire il comando come utente restic, viene specificato il backend SFTP, vengono aggiunte etichette alla copia (ad esempio, per distinguere i backup da macchine o servizi diversi) e vengono specificati i file da includere ed escludere.
Durante l'esecuzione, vedrai Resty scansionare le directory, calcolare la dimensione, caricare i nuovi blocchi e infine creare uno snapshot con il suo identificatore univoco. Una volta terminato, il repository sul server di backup conterrà un'istantanea completa dello stato dei tuoi dati in quel momento.
Controlla che la copia sia corretta
Non ha senso fare backup se non è possibile ripristinarli, quindi imparare a verificare cosa è stato salvato è fondamentale. Resty offre diversi comandi per questo, sia da server di copia nonché dal punto di vista del cliente.
Per elencare gli snapshot archiviati in un repository locale, puoi usare qualcosa come:
restic -r /home/ubuntu/rpi4_bk/ snapshots
L'elenco mostra l'ID di ogni snapshot, la data, l'host che lo ha creato, i tag inclusi e i percorsi. Con queste informazioni, sai quali versioni dei tuoi dati sono disponibili e quando sono stati generati.
Se invece di accedere al repository locale si desidera farlo dal client che ha creato le copie tramite SFTP, il comando è quasi identico, ma modifica il percorso del repository nell'URL remoto:
sudo restic -r sftp:vps2:/home/ubuntu/rpi4_bk/ snapshots
Per verificare l'integrità del repository, viene utilizzato il seguente comando: dai un'occhiataQuesto strumento analizza indici, pacchetti e alberi dati, verificando che tutto sia coerente. È un modo molto efficace per garantire che i backup non presentino danneggiamenti o problemi.
restic -r /home/ubuntu/rpi4_bk/ check
Si consiglia di eseguire questo controllo periodicamente, soprattutto se si utilizzano unità esterne, storage di rete o servizi in cui potrebbero verificarsi interruzioni, in quanto fornisce tranquillità riguardo all'effettiva integrità dei tuoi backup.
Elimina snapshot e criteri di conservazione
Con il tempoIl numero di snapshot salvati può aumentare considerevolmente ed è consigliabile disporre di un metodo organizzato per eliminare le vecchie copie. liberare spazio e mantenere il repository sotto controllo.
La forma più elementare è costituita da eliminare snapshot specifici utilizzando il suo ID. Per prima cosa elenchiamo le copie con il comando snapshots e poi possiamo eliminarne una specifica con forget:
restic -r /home/ubuntu/rpi4_bk/ forget 3161b4f6
Questo comando prende l'istantanea dell'indice, ma il dati condivisi Possono rimanere sul disco se fanno parte di altri snapshot. Per pulire definitivamente ciò che non è più necessario, eseguire fesso informazioni sul repository:
restic -r /home/ubuntu/rpi4_bk/ prune
Se vuoi fare tutto in una volta dal client a un backend SFTP, puoi combinare entrambi i passaggi in un singolo comando, chiedendo a Resti di dimenticare uno snapshot specifico e quindi di ripulire i dati associati.
Ancora più interessante è l'utilizzo delle policy di conservazione integrate. Ad esempio, se si desidera conservare solo le ultime sei copie per host, è possibile utilizzare:
restic forget -r /home/ubuntu/rpi4_bk/ --group-by host --keep-last 6 --prune
Con questo, Restic manterrà le sei istantanee più recenti per ogni macchina ed eliminerà quelle più vecchie, regolando automaticamente lo spazio del repository. Sono inoltre disponibili opzioni per conservare le copie in base all'età (giorni, settimane, mesi) o ai tag, offrendo ampia flessibilità nella progettazione delle policy di backup.
Automatizza i backup con script e cron
Una volta verificato il corretto funzionamento del backup manuale, il passo logico successivo è automatizzare il processo. L'approccio più comune consiste nell'utilizzare un piccolo script che svolga tutto il lavoro e lo programmi di conseguenza. cron o un servizio equivalente.
Il primo dettaglio da risolvere è il password del repositoryPer evitare di digitarlo ogni volta che viene eseguito, di solito viene creato un file, ad esempio pass en /home/restic/restic, che contiene la chiave. Gli vengono concessi permessi rigorosi in modo che solo l'utente restic (e root) possa leggerla:
echo "mi_password" > /home/restic/restic/pass
chmod 0400 /home/restic/restic/pass
Puoi anche avere un file di output, come raspberry.txtdove vengono reindirizzate tutte le informazioni generate dallo script. In questo modo è possibile Controlla facilmente se il processo è andato bene o se si sono verificati degli errori.
Lo script di automazione può essere chiamato run_backup.sh e contengono diverse sezioni: scrivere la data del backup, eseguire il comando di copia, applicare la politica di conservazione e, facoltativamente, eseguire un controllo di integrità alla fine.
#!/bin/bash
echo -e "Backup $HOSTNAME realizado el $(date +'%d/%m/%Y a las %R')" > /home/restic/restic/raspberry.txt 2>&1
sudo -u restic restic -r sftp:vps2:/home/ubuntu/rpi4_bk/ backup \
--password-file="/home/restic/restic/pass" \
--tag raspberry --tag docker \
-v --exclude-file=/home/restic/restic/files_to_exclude.txt \
--files-from=/home/restic/restic/files_to_backup.txt >> /home/restic/restic/raspberry.txt 2>&1
sudo -u restic restic -r sftp:vps2:/home/ubuntu/rpi4_bk/ forget \
--password-file="/home/restic/restic/pass" \
--group-by host --keep-last 6 --prune >> /home/restic/restic/raspberry.txt 2>&1
sudo -u restic restic -r sftp:vps2:/home/ubuntu/rpi4_bk/ check \
--password-file="/home/restic/restic/pass" >> /home/restic/restic/raspberry.txt 2>&1
Una volta creato lo script, non dimenticare di assegnargli i permessi di esecuzione. Da quel momento in poi, qualsiasi utente autorizzato (ad esempio, il tuo account utente abituale che usa sudo) potrà eseguirlo. Per avviare il backup automatico, è sufficiente richiamare lo script..
Pianifica l'esecuzione con cron su Linux e Android
Per effettuare copie automaticamente, la pratica usuale è quella di aggiungere un voce in crontab dell'utente da cui si desidera attivare il processo. Ad esempio, se si desidera che l'utente pi Esegui lo script ogni sabato alle 1:05; modifica semplicemente il tuo crontab:
crontab -e
E aggiungi una riga come questa:
5 1 * * 6 bash /home/restic/restic/run_backup.sh
Cron eseguirà automaticamente lo script all'ora specificata senza ulteriori interventi. In questo modo avrai copie regolari e coerenti senza doverlo fare manualmente ogni volta.
Negli ambienti Android, qualcosa di simile può essere ottenuto utilizzando Termux e il pacchetto termux-services, che fornisce supporto cron tramite amicoIl flusso di lavoro consisterebbe nell'installare Termux, aggiungere termux-services, abilitare i servizi e configurare un cron job che richiama uno script di backup basato su Restic, proprio come faresti su un sistema Linux desktop, ma adattando percorsi e variabili.
Restyc su Android e storage di tipo S3 con MinIO
Restic non è limitato al mondo dei PC o dei server. Puoi anche usarlo per proteggere i tuoi dati su Dispositivi Androidche in definitiva sono solo computer che gestiscono informazioni personali e di lavoro.
Un'opzione è quella di utilizzare un progetto specifico chiamato Restic Android, che utilizza termux/proot per eseguire il binario Restic Linux su Android. Questa app consente di gestire repository S3, B2 o REST, configurare cartelle di backup, pianificare gli orari dei backup e definire policy di pulizia, sebbene il progetto sia ancora in fase di sviluppo. fase iniziale di sviluppo e non priva di difetti.
Un'altra opzione, più flessibile, è quella di utilizzare Restic direttamente all'interno di Termux. In questo modo, la configurazione di backup viene mantenuta nei dotfile, condividendo gli script tra il computer desktop e il dispositivo Android con piccole variazioni. È molto comodo se si lavora già con modelli (ad esempio, file Jinja) e strumenti come jinrender per generare script con le variabili corrispondenti per ciascun dispositivo.
In entrambi i casi, l'archiviazione remota può essere basata su servizi compatibili con S3. È qui che entra in gioco MinIO, un server di oggetti che replica l'API S3 e che è possibile auto-ospita sul tuo server o anche sul tuo PCIn questo modo potrete usufruire di tutti i vantaggi del modello S3 senza dover pagare un servizio esterno o dipendere da terze parti.
Ciò comporta ovviamente l'installazione, la configurazione e la manutenzione di MinIO, ma in molti casi il costo è compensato dalla flessibilità e dal controllo completo sui dati. In combinazione con Restic, si ottiene un sistema di copie crittografate e deduplicate in un backend basato su oggetti. che controlli al 100%, sia per Linux che per Android.
Operazioni di base: snapshot, ripristino e pulizia
Nell'uso quotidiano di Resti, oltre a creare e pianificare i backup, ci sono tre operazioni che dovrebbero essere molto chiare: Elenca gli snapshot, ripristina i dati ed elimina le vecchie copie.
Per vedere quali copie hai memorizzato, il comando snapshots già menzionato ti mostra le inventario completo.
Se in qualsiasi momento vuoi confrontare due snapshot per vedere cosa è cambiato tra loro, puoi usare restic diff Passando gli ID che ti interessano, il che aiuta molto a comprendere l'evoluzione dei tuoi dati.
Il ripristino avviene con il comando restore, indicando l'ID dello snapshot (o la parola chiave latest (se si desidera quello più recente) e il percorso di destinazione. Restic non ripristina la posizione originale per impostazione predefinita, quindi è necessario specificare un directory di destinazione dove verrà visualizzato il contenuto:
restic restore latest -r /path/to/backup-repository --target /tmp/restore
Se si desidera recuperare solo una directory specifica, è possibile utilizzare opzioni aggiuntive come --include o --path per limitare la parte dello snapshot da ripristinare, risparmiando tempo e spazio durante la ricerca un piccolo set di file.
Per quanto riguarda la pulizia, a parte i comandi forget y pruneRestic consente di definire regole più elaborate, ad esempio "conserva le ultime N copie, conserva quelle degli ultimi X giorni, settimane o mesi, oppure non eliminare quelle con determinati tag". In questo modo avrai a disposizione strumenti sufficienti per la progettazione. strategie di fidelizzazione abbastanza sofisticate senza complicarti la vita.
Con Restic puoi impostare un sistema di backup su Linux (e altri sistemi, incluso Android) che sia veloce, sicuro e facile da gestire: installi il binario, crei un repository crittografatoDefinisci cosa viene copiato e cosa no, automatizza il processo con uno script e un cron job, applica policy di conservazione e verifica periodicamente l'integrità dei dati. Tutto questo sfrutta backend locali, SSH o servizi cloud come S3, con deduplicazione, crittografia avanzata e un semplice flusso di lavoro di ripristino che ti consente di dormire sonni tranquilli sapendo che i tuoi dati importanti sono ben protetti.
Scrittore appassionato del mondo dei byte e della tecnologia in generale. Adoro condividere le mie conoscenze attraverso la scrittura, ed è quello che farò in questo blog, mostrarti tutte le cose più interessanti su gadget, software, hardware, tendenze tecnologiche e altro ancora. Il mio obiettivo è aiutarti a navigare nel mondo digitale in modo semplice e divertente.