TAGS CLOUD
Incrementa dimensioniDecrementa dimensioni
Backup facili anche dalla Shell
Tenere una copia di riserva dei file più importanti è il primo passo per garantire la sicurezza del sistema. Ecco come farlo con un solo comando
(pagina 4 di 4)


tar cvzf ${archivio}.tar.gz $(find ${path}
-type f -mtime ${giorni})
Questo utilizza una sostituzione di comando per convertire l’output del programma find in una lista da passare al comando tar. Sfortunatamente, però, questo non funziona con i file il cui nome contiene uno spazio: lo spazio, infatti, è utilizzato dalla shell per separare le parole e, quindi, uno spazio nel nome di un file viene interpretato erroneamente. Ad esempio, se avessimo un file con nome “nuovo report.odt” e cercassimo di copiarlo con il comando

cp nuovo report.odt /media/disk
otterremmo un messaggio di errore, dovuto al fatto che la shell si aspetta di dover copiare i due file “nuovo” e “report.odt” nella directory indicata. Quando si utilizza il comando find, quindi, è necessario tenere sempre presente che file contenenti spazi nel nome non verranno trattati in modo normale. Fortunatamente esiste un modo piuttosto semplice per aggirare il problema con eleganza. In pratica, utilizzando l’opzione -print0 del comando find i nomi dei file trovati vengono separati non con uno spazio, ma con un carattere invisibile che corrisponde a alla stringa “\0”, e che è il carattere che il linguaggio C utilizza per terminare le stringhe. L’output di find così formattato può poi essere processato dal comando xargs, che di default non fa altro che concatenare tutte le righe in input in un unica riga, ma che con l’opzione -0 (attenzione, è uno zero, non una “o”maiuscola) separa i vari nomi non basandosi sugli spazi. Le opzioni del comando tar sono: “c” che crea un nuovo archivio, “v” che stampa a video le operazioni eseguite, “z” che crea un archivio compresso, “f” pone l’archivio nel file specificato, nel nostro caso ${backup_file}.
[19-24] Con queste righe diamo all’utente la possibilità di salvare il backup anche in remoto; dobbiamo, quindi, distinguere tra le destinazioni per decidere quale programma utilizzare per la copia: “cp” per una copia locale e “scp” per una copia remota. Il metodo utilizzato per prendere la decisione è basato sul fatto che gli indirizzi remoti sono dati nella forma utente@macchina:path, dove però la parte relativa all’utente è opzionale (se è lo stesso sulle due macchine); ciò che identifica sicuramente un indirizzo remoto è quindi la presenza dei due punti, cercati tramite il programma grep.
[25] A questo punto viene invocato il programma di copia, salvato nella variabile ${copy}, con i parametri rappresentati dal file di backup creato alla riga 18 e la destinazione fornita dall’utente sulla riga di comando.

Backup della directory corrente e salvataggio in una cartella remota


Pagina 4/4
Lascia un commento
Tag: backup, facili, remoti, script shell
Condividi