PŮVODNÍ OTÁZKA:
Pokud mám 2 stejné pevné disky s následujícími vlastnostmi:
- SATA 6,0 Gb/s
- 5 400 ot./min.
- 3 TB
Jak dlouho by mělo trvat dokončení úplné kopie dd?
Zatím to běží 5 hodin a stále běží...
Používám Linux Ubuntu 12.04 64bit a příkaz, který používám, je:
dd if=/dev/sdb of=/dev/sdc
AKTUALIZACE:1
Nyní vidím pokrok a bylo to více než 6 hodin pro kopii 430 GB. HDD je 3TB…
Neexistuje rychlejší způsob, jak to udělat?
AKTUALIZACE:2
Zdá se to mnohem lepší než předtím (Díky Groxxdovi za návrhy):
sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
ETA je asi 9 hodin pro 3 TB, zatímco předtím dosáhl 430 GB po 6 hodinách, takže odhaduji, že by to s předchozím příkazem trvalo asi 36 hodin.
Přijatá odpověď:
dd
bylo užitečné za starých časů, kdy lidé používali pásky (když na velikosti bloků záleželo) a kdy jednodušší nástroje jako cat
nemusí být binárně bezpečné.
V současné době dd if=/dev/sdb of=/dev/sdc
je prostě komplikovaný, k chybám náchylný, pomalý způsob zápisu cat /dev/sdb >/dev/sdc
. Zatímco dd
stále užitečné pro některé relativně vzácné úkoly, je mnohem méně užitečné, než kolik tutoriálů zmiňuje, že by vám to dalo věřit. V dd
není žádná magie , celé kouzlo je v /dev/sdb
.
Váš nový příkaz sudo dd if=/dev/sdb bs=128K | pv -s 3000G | sudo dd of=/dev/sdc bs=128K
je opět zbytečně pomalá a složitá. Data jsou načtena 128 kB najednou (což je lepší než dd
výchozí 512B, ale ne tak dobré jako ještě větší hodnoty). Poté prochází dvěma kanály, než je zapsán.
Použijte jednodušší a rychlejší cat
příkaz. (V některých benchmarcích, které jsem provedl před několika lety pod Linuxem, cat
byl rychlejší než cp
pro kopii mezi různými disky a cp
byl rychlejší než dd
s libovolnou velikostí bloku; dd
s velkou velikostí bloku bylo při kopírování na stejný disk o něco rychlejší.)
cat /dev/sdb >/dev/sdc
Pokud chcete tento příkaz spustit v sudo
, musíte provést přesměrování jako root:
sudo sh -c 'cat /dev/sdb >/dev/sdc'
Pokud chcete zprávu o průběhu, protože používáte Linux, můžete ji snadno získat, když zaznamenáte PID cat
proces (řekněme 1234) a podíváme se na pozici jeho vstupního (nebo výstupního) deskriptoru souboru.
# cat /proc/1234/fdinfo/0
pos: 64155648
flags: 0100000
Pokud chcete zprávu o průběhu a vaše unixová varianta neposkytuje snadný způsob, jak se dostat na pozice deskriptoru souboru, můžete si nainstalovat a použít pv
místo cat
.