Команда 'dd' занимает слишком много времени?
Я настроил dd
клонировать системный жесткий диск меньшей емкости 40,00 ГБ (/dev/sda) на новый больший жесткий диск объемом 111,00 ГБ, подключенный через USB-ридер (dev / sdb), и он работает уже два часа. Индикатор активности на новом жестком диске показывает, что он что-то делает. Но процессор только около 20%. Когда эта вещь будет завершена? Должен ли я начать процесс заново?
5 ответов
В будущем вы должны использовать pv
чтобы получить индикатор выполнения.
sudo apt-get install pv
С участием pv
предположим, что вы хотите клонировать диск объемом 20 ГБ, /dev/foo
, на другой диск (20 ГБ или больше!), /dev/baz
:
sudo dd if=/dev/foo bs=4M | pv -s 20G | sudo dd of=/dev/baz bs=4M
Важные моменты, на которые следует обратить внимание: bs=4M
Аргумент устанавливает размер блока для операций dd равным 4 МБ, что резко повышает скорость всего процесса. И -s 20G
аргумент говорит pv
насколько велика эта операция, поэтому она может дать вам ETA, а также текущую скорость.
я люблю pv
так сильно, что это должно быть незаконно.
Вы можете увидеть, как далеко он продвинулся, послав ему сигнал SIGUSR1, чтобы увидеть, сколько данных он скопировал и скорость передачи:
kill -SIGUSR1 $(pidof dd)
Для копирования вы ограничены скоростью ввода-вывода устройства, поэтому процессор не должен быть полностью загружен, так что не беспокойтесь об этом.
Я использовал pv, а также (ps и kill) в прошлом, как предлагалось в других ответах, но в последнее время я только что использовал dc3dd
вместо этого, который дает те же результаты, предоставляя отчет о ходе работы в течение всего процесса.
Вы можете проверить, установлен ли он уже с: which dc3dd
Если нет, вы можете установить его с sudo apt-get install dc3dd
Командные ключи похожи на dd (для клонирования, хотя стирание немного проще).
В вашем случае я бы использовал команду dc3dd if=/dev/sda of=/dev/sdb
Редактировать:
Последние версии dd
из пакета coreutils версии 8.24+, включенного в Ubuntu 16.04 и более поздних версий, включающего параметр состояния. Вы можете достичь того же результата с dd
добавив status=progress
переключиться на ваш dd
командная строка.
Пример: dd if=/dev/zero of=/dev/null count=1000 status=progress
Вместо этого вы можете использовать ddrescue:
sudo ddrescue -v /dev/sda /dev/sdb
V означает многословный.
У меня была похожая проблема. Причина была другой в моем случае.
Целевой диск - это внешний жесткий диск.
Если диск был смонтирован автоматически через udisks
а также udisks-glue
тогда скорость передачи с компакт-диска на жесткий диск составляла около 40 кБ / с.
Когда я размонтировал HD и установил его напрямую через mount
Я получил скорость передачи около 2,4 МБ / с.