Lavorando su Linux e OS X (10.10.5), sto usando lo strumento da riga di comando dd per copiare il contenuto di un'unità flash USB da e verso un archivio compresso. Per creare l'archivio, utilizzo il seguente su un'unità non montata (su Linux il formato è qualcosa come /dev/sdb
; su OS X è qualcosa come /dev/disk2
):
sudo dd if=/dev/disk1 bs=1m | gzip -c > disk.image.gz
che copia l'intero contenuto dell'unità, lo comprime e quindi lo scrive su disk.image.gz
. Per decomprimere l'immagine in una nuova unità, utilizzo:
cat disk.image.gz | gunzip -c | sudo dd of=/dev/disk1 bs=1m
che prende l'immagine del disco compresso, lo decomprime e quindi lo scrive nell'unità. (Puoi controllare l'avanzamento di entrambi i comandi eseguendo quanto segue in una finestra separata su Linux:
sudo killall -USR1 dd
o su OS X:
sudo killall -INFO dd
che in entrambi i casi segnala dd
per produrre un paio di righe sulla quantità di dati trasferiti.)
Entrambi i processi funzionano bene su Linux. Tuttavia, sebbene la lettura e la compressione funzionino bene su OS X, la decompressione e la scrittura non terminano mai. dd
continua a scrivere dati e più dati, anche se il file sorgente (decompresso) è terminato e l'unità disco deve essere piena. Se aspetto che più dati siano scritti rispetto a quelli che dovrebbero essere contenuti nell'unità flash e quindi ^C
per terminare il comando, l'unità risultante sembra montare e funzionare correttamente. Ma mi preoccupa che il comportamento non sia quello che mi aspetto.
Qualche idea sul perché la scrittura di dd
non termina mai, anche se non riceve più dati?
(BTW: se stai usando questo come istruzioni per masterizzare le tue unità disco, ASSICURATI hai gli identificatori di dispositivo giusti (ad esempio /dev/sdb
o /dev/disk2
menzionato sopra). dd
fa esattamente quello che dici di fare, quindi se ottieni l'identificatore sbagliato e gli dici di sovrascrivere l'unità di avvio, lo farà felicemente. Guarda altrove su come determinare il dispositivo giusto.)