Dopo un anno di sviluppo è stata presentata la versione del sistema di backup restic 0.13, che offre strumenti per il salvataggio di backup in un repository versionato, che può essere ospitato su server esterni e in archivi cloud. I dati sono memorizzati in forma crittografata. È possibile stabilire regole flessibili per includere ed escludere file e directory durante la creazione di un backup. Funziona su Linux, macOS, Windows, FreeBSD e OpenBSD. Il codice del progetto è scritto in Go e distribuito sotto licenza BSD.
Caratteristiche principali:
- Supporto per la memorizzazione dei backup nel file system locale, su esterno server con accesso SFTP/SSH o HTTP REST, in cloud come Amazon S3, OpenStack Swift, BackBlaze B2, Microsoft Azure Blob Storage e Google Cloud Storage, e in qualsiasi archivio per cui sono disponibili backend rclone. Per l'organizzazione dello storage è possibile utilizzare un server rest speciale, che offre prestazioni più elevate rispetto ad altri backend e in grado di funzionare in modalità solo append, che non consente di eliminare o modificare i backup in caso di compromissione dell'origine server e accesso alle chiavi di crittografia.
- Supporto per la definizione di regole flessibili per escludere file e directory durante la creazione dei backup (ad esempio, per escludere dai backup i log, i file temporanei e i dati facilmente riproducibili). Il formato delle regole di esclusione è familiare e ricorda rsync o gitignore.
- Facilità di installazione, utilizzo e recupero delle informazioni. Per lavorare con i backup è sufficiente copiare un singolo file eseguibile, che può essere utilizzato senza ulteriore configurazione. Per il file eseguibile viene fornita una build ripetibile, che consente di verificare autonomamente che la build binaria sia stata creata dai testi sorgente forniti.
- Sono supportati gli snapshot, che riflettono lo stato di una determinata directory con tutti i file e le directory annidate in un determinato momento. Ogni volta che viene creato un nuovo backup, viene generato uno snapshot associato, che consente di ripristinare lo stato in quel momento. È possibile copiare snapshot tra diversi repository.
- Per risparmiare larghezza di banda, durante la creazione di backup vengono copiate solo le informazioni modificate. Per garantire un'archiviazione efficiente, i dati nel repository non vengono duplicati e gli snapshot aggiuntivi coprono solo i dati cambiati. Il sistema gestisce non file interi, ma blocchi di dimensioni variabili selezionati utilizzando la firma di Rabin. Le informazioni sono archiviate in base al contenuto e non ai nomi dei file (i nomi e gli oggetti associati ai dati sono determinati a livello di metadati del blocco). La deduplica e l'esclusione della copia superflua dei dati vengono effettuate sulla base dell'hash SHA-256 del contenuto.
- Per una valutazione visiva del contenuto del repository e per semplificare il ripristino, uno snapshot con il backup può essere montato sotto forma di una partizione virtuale (il montaggio avviene tramite FUSE). Sono disponibili anche comandi per analizzare le modifiche e per l'estrazione selettiva dei file.
- Le informazioni sui server esterni vengono conservate in forma crittografata (per gli hash viene utilizzato SHA-256, per la crittografia AES-256-CTR e per garantire l'integrità si utilizzano codici di autenticazione basati su Poly1305-AES). Il sistema è stato progettato per garantire che i backup siano conservati in ambienti non affidabili e che l'accesso a un backup da parte di terzi non comprometta il sistema. La crittografia può essere garantita sia tramite chiavi di accesso che tramite password.
- È prevista la possibilità di verificare il backup tramite hash e codici di autenticazione per confermare che l'integrità dei file non sia stata compromessa e che i file necessari possano essere ripristinati senza includere modifiche nascoste.
Nella nuova versione:
- È stata aggiunta la supporto per i modelli negativi di esclusione. Ad esempio, «—exclude ‘/home/user/*’ —exclude ‘!/home/user/.config'» per escludere tutto il contenuto di /home/user, tranne la directory /home/user/.config.
- Nel comando «backup» è stata aggiunta la modalità «—dry-run», che consente, se avviata con l'opzione «—verbose», di monitorare senza apportare modifiche effettive quali file saranno inclusi nel backup.
- È stata aggiunta la supporto per gli hash in vari backend di archiviazione per una verifica aggiuntiva dei dati caricati.
- È stata ottimizzata la squadra «restore», che ora lavora due volte più velocemente. È stata anche aumentata la produttività della squadra «copy».
Fonte: opennet.ru
