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 .