Команда '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 МБ / с.

Другие вопросы по тегам