Clonare un disco Virtualbox: il problema dell’UUID

In Virtualbox ciascun disco è rappresentato da un file. Quindi, per clonare un disco è sufficiente fare una copia del file. C’è però un inghippo: ogni disco fisso virtuale è rappresentato da un UUID, un identificativo UNICO. E Virtualbox non permette di aggiungere a una macchina due dischi con lo stesso UUID. La soluzione è nascosta in una funzioncina da riga di comando, da eseguire sul file copiato e che ne modifica l’UUID:

vboxmanage internalcommands sethduuid .\MyVM.vdi

Lascio qui questa perla per chi ne dovesse avere bisogno un domani.

Rsync: backup su Mac Os X

Rsync è una utility standard del mondo unix per sincronizzare tra loro due cartelle, sia in locale che in remoto (ad esempio via SSH). Rsync effettua una copia incrementale: se lancio una seconda volta il comando di sincronizzazione, rsync invierà solo i file che risultano modificati rispetto alla sincronizzazione precedente. Questo lo rende ottimo per fare copie di backup di cartelle di lavoro: io lo uso per tenere su una chiavetta USB la cartella contenente i miei lavori per l’università (una copia in più non fa mai male!).

Per usarlo su Mac Os X, bisogna però tenere conto di un paio di cosette che ho scoperto dopo noiose ricerche e quindi pubblico a beneficio dei miei 2 lettori:

1) Rsync è compreso nell’installazione standard di Mac Os X Snow Leopard (eh, lo so, ma il mio processore non è supportato da Lion quindi non ho informazioni più fresche); sfortunatamente è una versione giurassica. Si può risolvere aggiornando con MacPorts: supponendo che lo abbiate installato basta lanciare un comando:

sudo port install rsync

Una volta installato, però, non andrà a sovrascrivere la versione di rsync di default. Dovete quindi eseguirla andando a inserire il path completo in cui risulta installata la nuova versione:

/opt/local/bin/rsync

Per verificare la versione effettiva potete usare l’opzione –version

/opt/local/bin/rsync --version

2) Se volete essere sicuri di poter leggere i vostri backup con qualunque sistema operativo (cosa senz’altro desiderabile) conviene utilizzare una normalissima chiavetta usb formattata in FAT32. Questo però nasconde un’insidia: FAT32 gestisce le date a intervalli di 2 secondi.. se considerate che rsync va a vedere la data di modifica di un file per capire se copiarlo o meno, capirete che in assenza di provvedimenti ogni volta il backup sarà di TUTTI i file.. scomodo.. per rimediare si usa l’opzione

--modify-window=1

che lascia un margine di un secondo sulla valutazione del tempo di ultima modifica del file..

Concludendo, questa è la riga che uso per fare un backup dei miei dati (da una cartella /Users/mario/Documents/roba_di_scuola/ a una chiavetta con nome di partizione BACKUPPO); è un’unica riga, io l’ho separata per renderla più leggibile!

/opt/local/bin/rsync -aEv --modify-window=1 --progress
   /Users/mario/Documents/roba_di_scuola/ 
   /Volumes/BACKUPPO/roba_di_scuola/

Spero che vi possa essere d’aiuto, saluti a tutti!

Airport – utility Mac Os X per analisi delle reti wireless

Da qualche parte, nascosta tra le cartelle dell’installazione standard di Mac Os X, c’è una simpatica utility richiamabile da riga di comando che permette di fare alcune cose interessanti con la propria wireless: vedere/modificare i parametri della propria connessione, fare uno scan delle reti e mostrarne SNR e algoritmo di protezione, o addirittura fare packet sniffing. Tale utility si chiama Airport ed è nascosta qui:

/System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport

Si, è abbastanza scomodo da ricordare, quindi possiamo farne un simpatico link simbolico in usr/bin (il seguente comando va scritto tutto di fila, senza andare a capo! è un comando unico!):

sudo ln -s /System/Library/PrivateFrameworks/Apple80211.framework
/Versions/Current/Resources/airport /usr/bin/airport

A questo punto possiamo richiamarla semplicemente scrivendo “airport” dalla riga di comando. Ma cosa ci possiamo fare? Innanzitutto lanciando l’utility senza parametri possiamo vedere una sorta di help.

Con il comando

airport en1 scan

possiamo avere una lista delle reti visibili nella zona, corredata di potenza del segnale e tipo di protezione. Con il comando

airport -I

possiamo vedere le caratteristiche della rete a cui siamo connessi. E per finire, con il comando

sudo airport en1 sniff 6

il sistema crea un file airportSniffXXXXXX.cap in /tmp in cui sniffa tutti i pacchetti che passano sul canale 6. Questo file può essere comodamente dato in pasto a programmi tipo Wireshark per l’analisi dei pacchetti.

Ciao a tutti!

 

 

Quick Bash Tip: come estrarre nome file ed estensione da un path

Continuano le piccole note di bash. Stavolta vediamo un paio di facili comandi per estrarre nome file ed estensione da un path. Inserisco il tutto in un piccolo script che analizza tutti i file nella directory corrente e ne stampa prima il nome e poi l’estensione.

for file in $(ls) ; do
  filename=${file##*/}
  basename=${filename%\.*}
  extension=${filename##*.}
  echo Nome: ${basename}, estensione: ${extension}
done

Ulteriori informazioni (per i non deboli di cuore) a questo indirizzo.

Quick tip: come creare un PDF da riga di comando a partire da un TXT

Piccolo suggerimento su un modo rapido per creare un pdf a partire da un file di testo con un unico comando da terminale (come sempre vale per Linux e Mac Os X). Supponiamo di voler convertire un file di nome “prova”:

cat prova | enscript -p - | ps2pdf - file.pdf

La prima parte apre il file e ne passa il contenuto alla seconda parte.

Nella seconda parte il programma “enscript” trasforma quanto ricevuto in formato PostScript e lo passa alla terza parte. Da notare che si deve usare l’opzione “-p” seguita da uno spazio e un altro trattino, per dire che il postscript deve essere inviato allo stdout (altrimenti viene inviato alla stampante di sistema).

Nella terza parte il programma “ps2pdf” trasforma quanto ricevuto nel file “file.pdf”.

Facile e indolore, ma lo scrivo perchè ci ho messo tipo mezz’ora a scoprirlo e magari in questo modo risparmio un pò di fastidio a qualcun altro.

Quick tip: come splittare un file in più parti

Piccolo suggerimento su come suddividere un file in più parti di dimensione nota: il comando SPLIT, disponibile su Linux e Mac Os X.

split -b DIM FILE PREFISSO

l’opzione -b serve a specificare la dimensione dei componenti da creare (in byte). Si possono usare anche i suffissi b (512 byte), k (1 kb) e m (1 Mb). Ad  esempio, se scrivo “-s 4k” significa che voglio frammenti di 4 kbyte l’uno.

FILE è il nome del file da scomporre

PREFISSO è il prefisso con il quale verranno chiamati i frammenti creati, che di default saranno una cosa del tipo PREFISSOaa, PREFISSO ab, PREFISSOac, PREFISSOad… ecc… volendo è possibile intervenire con le opzioni -a (imposta la lunghezza del suffisso, che di default è 2) e -d (suffissi numerici invece che letterali).

Esempio: mi serve dividere il file bob.dat in frammenti di 4Kb da dare in pasto a un altro programma per un’analisi statistica:

split -s 4k bob.dat bob

I frammenti si chiameranno bobaa, bobab, bobac, bobad, ….. e così via fino alla fine del file (o fino a bobzz, dopodichè lo split si blocca perchè ha finito lo spazio dei nomi; si può ovviare con l’opzione -a).

Per ulteriori informazioni:

split --help

Saluti!