GNU/Linux >> Linux Esercitazione >  >> Linux

Copia Dd completa da HDD a HDD?

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 .


Linux
  1. Copiare le ultime N righe da un file all'altro?

  2. Come copiare file da Wine a desktop?

  3. Nome completo del processo da task_struct

  4. Come copiare i file dal dockerfile all'host?

  5. Come copiare il testo da less

Copia un file in più directory dalla riga di comando su Linux

Se posso, come installare Ubuntu da Ubuntu?

Importazione PostgreSQL CSV dalla riga di comando

pscp copia il file in remoto da Windows a Linux

copiare il file da Windows a Linux

Accensione dell'HDD in standby:impedisce la rotazione