Nel mondo IT, è importante conservare una copia dei tuoi dati il più possibile per poterli utilizzare quando necessario in caso di guasto del disco o di rimozione per errore. Pertanto, eseguire un backup regolare alla fine della giornata è una buona pratica per un utente responsabile del computer.
Il comando 'rsync' viene normalmente utilizzato per copiare i dati di grandi dimensioni. Tuttavia, il comando 'cp' viene utilizzato anche quando si copia un numero limitato di directory e file su una macchina locale.
In questo articolo impareremo come eseguire il backup di file e cartelle in Debian 10.
Prerequisito
È necessario disporre di quanto segue affinché questo tutorial funzioni.
1. Due macchine Debian 10 con privilegi di root
Backup delle directory con il comando cp
Il primo comando di cui parleremo è 'cp'. Viene utilizzato per copiare un numero limitato di file e cartelle su una macchina locale. Pertanto, non è praticamente utilizzato nell'industria.
La sintassi del comando 'cp' è la seguente.
cp -option1 -option2 destinazione di origine
Per capire, copieremo i file dal desktop/log in Karim/logrot. Esegui il seguente comando sul terminale.
cp -avr Desktop/log Karim/logro
a:Viene utilizzato per preservare gli attributi della directory come modalità file, proprietà, timestamp ecc.
r:Viene utilizzato per copiare ricorsivamente le directory che si trovano all'interno della directory principale
v:viene utilizzato per dettagliare l'output
Quello che segue è l'output di esempio.
Se si desidera copiare tutti i file, le directory e le sottodirectory in un'altra directory, è possibile utilizzare il carattere jolly *. Ad esempio, il comando seguente copierà tutti i dati da una directory esistente Desktop/log/ in Karim/logro/.
cp -avr Desktop/log/* Karim/logro/
Quello che segue è l'output di esempio.
Backup delle directory con rysnc
Come abbiamo già detto, il comando più utilizzato per eseguire il backup di file e cartelle è 'rsync'. Pertanto, discutiamo di cosa si tratta e come viene utilizzato.
Cos'è rysnc?
Rsync sta per sincronizzazione remota ed è stato scritto da Andrew Tridgell e Paul Mackerras il 19 giugno 1996. È un comando efficiente per la sincronizzazione dei file e il trasferimento tra macchine locali e di rete. È disponibile per impostazione predefinita sulla maggior parte dei sistemi. Tuttavia, puoi installarlo con l'aiuto di semplici comandi se non è disponibile (Esegui i comandi con privilegi di root).
apt-get update
apt-get install rsync
È inoltre necessario disporre di un client e un server ssh installati su entrambe le macchine di rete prima di sincronizzare i dati. Esegui i seguenti comandi con privilegi di root su entrambe le macchine Debian 1o.
apt-get install ssh
Backup delle directory sulla macchina locale
La sintassi di base durante la sincronizzazione dei file sul computer locale è la seguente.
opzione rsync directory-origine directory-destinazione
Se vuoi mantenere i metadati come proprietà, autorizzazioni, data di creazione, ecc. Devi usare -a opzione. Se vuoi copiare ricorsivamente le directory all'interno della directory, devi usare l'opzione -r.
rsync -ar directory dei sorgenti directory di destinazione
Allo stesso modo, se vuoi vedere l'avanzamento mentre la sincronizzazione è in corso, usa l'opzione -v. I comandi dovrebbero essere i seguenti,
rsync -avr directory dei sorgenti directory di destinazione
Supponiamo di voler sincronizzare file e cartelle che si trovano su Desktop/log su Karim/logro, il comando dovrebbe apparire come segue.
rsync -avr Desktop/log Karim/logro
Quello che segue è l'output di esempio.
Discutiamo un altro esempio e diciamo che abbiamo una cartella data-1 situata sul disco rigido 1 (/media/hdd1/data-1) e desideri sincronizzarla con il secondo disco rigido in /media/hdd2/. Il comando completo dovrebbe apparire come segue.
rsync -avr /media/hdd1/data-1 /media/hdd2/
Il comando, una volta eseguito, creerà una directory data-1 nel secondo disco rigido e copierà tutto il contenuto nel percorso di destinazione /media/hdd2/.
Backup di file e directory in rete
La sintassi è leggermente diversa durante il trasferimento di dati sulla rete. Quando vuoi sincronizzare una directory locale con una directory remota, il comando dovrebbe apparire come segue.
rsync [-options] PathofSourceFolder [email protetta]:PathofDestinationFolder
Supponiamo di avere una cartella di test situata all'interno della mia macchina locale in /home/karim/testfolder e di volerla sincronizzare in /home/karim. L'utente remoto è "karim" e l'indirizzo IP della macchina è 10.1.1.2. Esegui il seguente comando sul terminale.
rsync -avr /home/karim/testfolder [email protected]:/home/karim/
Non appena esegui questo comando, ti verrà chiesto di inserire la password della macchina remota.
Di seguito è riportato l'output di esempio dopo la sincronizzazione della directory.
Quando vuoi sincronizzare una directory remota con una directory locale, il comando dovrebbe apparire come segue.
rsync [-options] [email protetta]:PathofSourceFolder PathofDestinationFolder
Supponiamo di avere una cartella remota "cartella di test" situata in /home/karim/ e di voler sincronizzare con la macchina locale nella posizione /home/karim/. L'indirizzo IP della macchina remota è 10.1.1.2 e il nome utente è karim.
Esegui il seguente comando sul terminale.
rsync -avr [email protected]:/home/karim/ /home/karim/testfolder
Di seguito è riportato l'output di esempio.
Come automatizzare il backup
È più conveniente automatizzare il backup in modo che gli ingegneri di sistema non debbano preoccuparsi di eseguire manualmente i comandi e di eseguire i backup ogni giorno.
C'è un famoso strumento chiamato "crontab" in Linux che viene utilizzato per automatizzare il processo di backup. Possiamo programmare per eseguire tutti i comandi di cui sopra ogni giorno, settimanalmente o mensilmente. Se non hai installato crontab sulla tua distribuzione Linux, esegui i seguenti comandi sul terminale con privilegi sudo.
apt-get update
apt-get install cron
Dopo aver installato crontab, esegui il seguente comando sul terminale per aprire l'editor crontab.
crontab -e
L'output di esempio dovrebbe apparire come segue.
Il crontab ha i seguenti cinque campi,
m h dm m dw comando
m:specifica i minuti (0-59)
h:specifica l'ora (0-23)
dm:specifica il giorno del mese (1-31)
m:specifica il mese (1-12)
dw:specifica il giorno della settimana (0-6 dove 0 è domenica)
Prendiamo un esempio precedente di sincronizzazione di una directory da un disco a un altro disco e diciamo che vogliamo farlo ogni giorno alle 12:00, il lavoro cron dovrebbe essere il seguente.
0 0 * * * rsync -avr /media/hdd1/data-1 /media/hdd2/
Supponiamo di voler eseguire un backup ogni mese la domenica alle 12:00, il processo cron dovrebbe essere scritto come segue.
0 0 1 * * rsync -avr /media/hdd1/data-1 /media/hdd2/
Conclusione
Hai letto come possiamo eseguire il backup usando il comando estremamente potente "rysnc". Abbiamo concluso l'articolo con un "crontab". Anche "rsync" e "crontab" sono una combinazione utile.