Backup dei dati


Gran parte di questa pagina è stata presa in prestito dalla guida per l'anonimato più completa esistente in rete che è quella di Hacklog che trovate a questo link:

Hacklog, Volume 1: Anonimato

Adesso è arrivato il momento di capire in che modo salvare tutto ciò che riguarda i nostri lavori, vita privata, documenti top-secret e via dicendo. Considera questa pagina molto importante in quanto la tua vita digitale potrebbe dipendere dal successo o dal fallimento di come applicherai tutto quello che qui viene spiegato.

Il Backup dei dati è un processo fondamentale per evitare che quello su cui hai lavorato vada in fumo per un guasto fisico, un crash o un errore che non dovevi compiere. È un processo che deve diventare parte della tua checklist quotidiana, un qualcosa che devi fare ogni singolo giorno. Non vedere il formato digitale come una cosa indistruttibile: la tecnologia dei dati si basa su piccolissime frequenze magnetiche che possono essere sollecitate da agenti esterni in ogni momento; basta una scossa, un temporale o un semplice colpo per mandare tutto in frantumi.


Quanti backup servono?


Per avere sempre tutto sotto controllo sarebbero necessari almeno due dischi di Backup, dislocati possibilmente in due aree diverse. Il primo potrebbe essere lasciato anche all’interno del PC o magari come HDD esterno, il secondo dentro l’auto, a lavoro, a casa di un amico/familiare. Se succedesse qualcosa - qualunque cosa - in uno dei due posti l’altro HDD sarebbe comunque salvo.

Effettua un backup quando fai un nuovo dump, effettua un backup quando hai nuovi log su cui lavorare, effettua un backup quando crei un nuovo wallet bitcoin. Effettua SEMPRE un backup per qualunque cosa reputi anche solo minimamente importante. Non prenderla come una fissa, certo, ma ricorda che maggior tempo dedicherai alla tua vita digitale maggiori saranno le perdite che potresti avere, sia esso tempo, soldi, lavoro o quant’altro.

Pensa se magari un giorno - o forse è già quel giorno - avrai centinaia se non migliaia di euro su un wallet. Di colpo... puff! Tutto svanito. A chi darai la colpa? Non lesinare sull’acquisto di una o più memorie aggiuntive: se necessario, dividi i tuoi lavori per più memorie (così da avere anche una buona archiviazione che ti permetterebbe una più veloce ricerca dei tuoi dati).

Possiamo decidere di fare i backup manualmente oppure affidarsi a un programma per farlo, quello che ritengo sia il migliore da consigliare penso sia Rsync.


RSYNC


Ritengo che ognuno abbia il proprio metodo per organizzarsi i file: inutile quindi fare una lista dei migliori programmi per questo o quel Sistema Operativo, se Cronologia File o Backup e Ripristino per Windows oppure Time Machine per macOS sono adeguati per delle copie di sicurezza.

Ciò che possiamo ritenere il tool più adatto per questo tipo di operazioni si chiama rsync, disponibile per tutti i Sistemi Operativi a base UNIX e anche per Windows tramite installazione terza con cygwin. Questo software ha diversi vantaggi rispetto alle controparti disponibili: è ormai usato per consuetudine tra gli amministratori di sistema, dunque molto documentato, offre un algoritmo davvero efficace per la copia di file anche tramite protocollo ssh (per la copia in remoto) e la possibilità di comprimere al volo in diversi formati.


Installazione di Rsync


È possibile trovare Rsync già in macOS a partire dalla versione 10.4, oltre ovviamente in quasi tutte le distribuzioni a base GNU/Linux, Debian compresa. Se per qualche ragione non dovesse essere presente si potrà procedere alla sua installazione digitando da terminale:

$ sudo apt-get install rsync

Per Windows invece si potrà far riferimento al programma cygwin che permette di installare anche la maggior parte dei tool già esistenti in Linux) oppure cwRsync.


Copia il locale con Rsync


La grande versatilità di rsync è documentata nell’eccellente lista dei parametri che è in grado di supportare. Possiamo averne una lista lanciando il solito parametro --help:

$ rsync --help

oppure il man:

$ man rsync

Prima di familiarizzare con le sue funzionalità è bene tener conto della struttura di copia. Rsync gestisce gli input e output esattamente come il tool cp in Linux, quindi tratterà il primo valore come l’elemento (o gli elementi) da copiare, mentre il secondo come il percorso di destinazione:

$ rsync [filedacopiare] [destinazionedicopia]

Facciamo ora pratica con i parametri.
Ipotizziamo di voler copiare un file presente dalla cartella1 alla cartella2 presente nella home del nostro utente:

$ rsync -a $HOME/rsync $HOME/rsync_backup

Inutile ricordare che [nomeutente] andrà sostituito con il nick dell’utente attuale, giusto? In questo caso abbiamo usato un parametro: -a. A cosa serve?
Il parametro -a si occupa di copiare ricorsivamente tutti i file (quindi anche quelli dentro le cartelle) mantenendo la struttura originale, i permessi e altre informazioni.

Vorremmo però decidere di comprimere on-the-fly il contenuto della cartella: perché non usare il parametro -z ?

$ rsync -az $HOME/rsync $HOME/rsync_backup

Come abbiamo visto abbiamo usato -az, quindi abbiamo abbinato i parametri -a e -z. In questo caso non solo l’operazione sarà ricorsiva ma i file verranno compressi prima di raggiungere la destinazione, quindi verranno estratti in locale. Questa funzione potrà ritornare utile per grandi quantitativi di dati.

L’uso di rsync non ha limiti di alcun genere: puoi provare a sperimentare copiando i tuoi file direttamente nella tua memoria esterna:

$ rsync -az /home/[nomeutente]/cartella1 /media/
[nomeutente]/[nomepartizione]


Copia il remoto con Rsync


Avanzando nel mondo dell’informatica presto o tardi potrai decidere di affittare un Server Dedicato, una VPS o avere una macchina di tua proprietà in remoto. 
Non starò qui a dirti come configurare un Server per accettare connessioni di tipo SSH, spero tu lo sappia già fare: se così non fosse, puoi documentarti online o affittare un Server o una VPS per iniziare a sperimentare rsync anche nella rete.

Il riconoscimento del protocollo di rete viene fatto in automatico anteponendo alla destinazione i dati di login della macchina e il suo host, seguito dai due punti. Se ad esempio vogliamo copiare dei dati da remoto al nostro computer locale useremo:

$ rsync -a [utente@host]:/cartella1 /home/[nomeutente]/
cartella2

Qui [utente@host] prende il valore dei dati di login assieme all’indirizzo IP della macchina o il suo dominio. All’occorrenza rsync si occuperà di chiederci la password d’accesso tramite SSH.

Se per motivi di sicurezza abbiamo modificato la porta del nostro server (che di default è una TCP 22) a un’altra dobbiamo poterlo dire a rsync. In questo caso il parametro è leggermente più arzigogolato ma comunque facilmente applicabile:

$ rsync -a --rsh="ssh -p PORT” [utente@host]:/
cartella1 /home/[nomeutente]/cartella2

Rsync di default non è in grado di mostrare lo stato d’avanzamento della copia. Questo può essere un problema, soprattutto se non conosciamo a menadito la dimensione dei file da copiare e la velocità di trasferimento. Per conoscere il tempo rimanente di copia usiamo il parametro --progress:

$ rsync -a --progress [utente@host]:/cartella1 /home/
[nomeutente]/cartella2

Se invece siamo soliti effettuare backup in remoto a loro volta presenti nelle directory ma non è nostra intenzione scaricarli ogni volta possiamo decidere di specificare la dimensione massima (e all’occorrenza anche minima) dei file che stiamo per processare. I parametri sono --max-size e --min-size come nell’esempio prossimo:

$ rsync -a --max-size=10M [utente@host]:/cartella1 /
home/[nomeutente]/cartella2

In questo modo i file più grandi di 10 Megabyte verranno ignorati.