DOMANDA ORIGINALE:
Se ho 2 dischi rigidi identici con le seguenti caratteristiche:
- SATA 6.0 Gb/s
- 5400 giri/min
- 3 TB
Quanto tempo dovrebbe impiegare una copia dd completa per essere completata?
Finora è in funzione da 5 ore e funziona ancora...
Sto usando Linux Ubuntu 12.04 64bit e il comando che sto usando è:
dd if=/dev/sdb of=/dev/sdc
AGGIORNAMENTO:1
Ora posso vedere i progressi e sono trascorse più di 6 ore per la copia da 430 GB. L'HDD è da 3 TB...
Non esiste un modo più veloce per farlo?
AGGIORNAMENTO:2
Sembra molto meglio di prima (grazie a Groxxda per i suggerimenti):
sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
L'ETA è di circa 9 ore per 3 TB, mentre prima raggiungeva i 430 GB dopo 6 ore, quindi immagino che ci sarebbero volute circa 36 ore utilizzando il comando precedente.
Risposta accettata:
dd
era utile ai vecchi tempi quando le persone usavano i nastri (quando le dimensioni dei blocchi erano importanti) e quando strumenti più semplici come cat
potrebbe non essere a sicurezza binaria.
Al giorno d'oggi, dd if=/dev/sdb of=/dev/sdc
è un modo complicato, soggetto a errori e lento di scrivere cat /dev/sdb >/dev/sdc
. Mentre dd
ancora utile per alcune attività relativamente rare, è molto meno utile del numero di tutorial che lo menzionano ti farebbero credere. Non c'è magia in dd
, la magia è tutta in /dev/sdb
.
Il tuo nuovo comando sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
è di nuovo inutilmente lento e complicato. I dati vengono letti a 128kB alla volta (che è meglio di dd
predefinito di 512B, ma non buono come valori ancora maggiori). Quindi passa attraverso due tubi prima di essere scritto.
Usa il più semplice e veloce cat
comando. (In alcuni benchmark che ho realizzato un paio di anni fa sotto Linux, cat
era più veloce di cp
per una copia tra dischi diversi e cp
era più veloce di dd
con qualsiasi dimensione del blocco; dd
con un blocco di grandi dimensioni era leggermente più veloce durante la copia sullo stesso disco.)
cat /dev/sdb >/dev/sdc
Se vuoi eseguire questo comando in sudo
, devi fare in modo che il reindirizzamento avvenga come root:
sudo sh -c 'cat /dev/sdb >/dev/sdc'
Se vuoi un rapporto sullo stato di avanzamento, dato che stai usando Linux, puoi facilmente ottenerne uno annotando il PID del cat
process (diciamo 1234) e guardando la posizione del suo descrittore di file di input (o output).
# cat /proc/1234/fdinfo/0
pos: 64155648
flags: 0100000
Se desideri un rapporto sullo stato di avanzamento e la tua variante unix non fornisce un modo semplice per raggiungere le posizioni di un descrittore di file, puoi installare e utilizzare pv
invece di cat
.