Chi ha letto i miei scorsi articoli su Linux, si chiederà perché scrivo tutti i miei post riguardo all’uso della shell e non per esempio su qualche programma con interfaccia grafica, in effetti sono sviluppatore visuale o no? I motivi sono: a) articoli su aggiornamenti o uso di applicazioni visuali ce ne sono a bizzeffe ed anzi ci si fa la guerra per pubblicarle prima degli altri, non ci sarebbe nulla di nuovo; b) sono nato a pane, marmellata e shell; c) perché utilizzare pesanti applicazioni grafiche se le stesse cose si possono fare a riga di comando? Ecco quindi che nei miei articoli si impara l’uso di comandi non visuali che in particolare in Linux sono molto potenti. Vediamone due per la gestione dei file, ma non i comandi come cp o mv di cui abbiamo trattato in questo articolo, bensì dd e split, il primo per copiare blocco a blocco un file ( sarebbe da dispositivo a dispositivo, ma dato che in Linux tutto è un file… ), il secondo per farlo a pezzi. Il comando dd è uno di quelli che più spesso sono presenti negli script che lavorano su dischi, file e partizioni. La sua peculiarità risiede nel fatto che è in grado di copiare dati da un supporto all’altro leggendoli e scrivendoli blocco a blocco, a basso livello, o se preferite in modalità raw. La sintassi è semplice, basta indicare una sorgente di dati, identificata dall’opzione if ed una destinazione di questo flusso di dati, identificata con l’opzione of, infine occorre indicare la grandezza dei blocchi con bs. Il campo di utilizzo di questo comando è vastissimo, prendiamo per esempio la copia dell’immagine di un cd inserito nel lettore. Per copiare la sua immagine basta dare questo comando:
dd if=/dev/cdrom of=cd.iso bs=2048
che ora sarà presente sulla directory corrente. Un altro esempio potrebbe essere quello di copiare i dati di un vecchio hard disk che sta esalando i suoi ultimi respiri su un file:
dd if=/dev/sda1 of=/backup.img bs=4096 conv=noerror
in questo caso abbiamo anche detto al comando di non controllare i blocchi difettosi, perché vogliamo prendere qualsiasi informazione disponibile dal nostro supporto morente. Occorre fare molta attenzione con questo comando, soprattutto quando si inserisce l’opzione of, questo perché se si sbaglia device si rischia di cancellare i dati esistenti.
Una volta fatto il backup del nostro supporto ci accorgiamo che il file immagine risultante è troppo grande per un cd o anche dvd, quindi cosa facciamo se vogliamo conservarlo in un luogo sicuro? Semplice, lo facciamo a pezzi e lo mettiamo su più supporti ottici. Per tagliare un file si utilizza il comando split, ogni parte con una dimensione predefinita:
split -b 680m -d backup.img back_
con questo comando suddividiamo il file backup.img in varie parti, tutte di una grandezza ( -b ) di 680 MB ( 680m ) di modo che vada su dei cd ed inoltre chiediamo di mettere dopo back_ dei numeri ( -d ) e non delle lettere che sono di default. Per ricomporre il file spezzettato nel file iniziale si usa questa istruzione:
cat back_* > backup-ricomposto.img
i file sono identici, difatti se diamo il comando:
md5sum backup.img
md5sum backup-ricomposto.img
possiamo notare che i numeri sono gli stessi, proprio come i file.
I comandi della shell di Linux sono molto potenti, conoscerli è conoscere il sistema operativo.