Как я могу узнать, сколько времени займет клонирование `dd`?

Мне пришлось dd пара жестких дисков по 1 ТБ. Они занимают несколько часов, чтобы клонировать, и я задавался вопросом, был ли какой-нибудь способ узнать, как быстро они идут, сколько они сделали и сколько времени они будут копировать остальные.

Все, что я вижу, это терминал с запущенной командой. Когда я бегу ps -e по крайней мере, я знаю, что dd работает с показанным использованием процессора, но у меня нет никакого способа узнать, сколько он сделал или сколько времени потребуется, чтобы закончить.

Вид сводит меня с ума.

4 ответа

Решение

Используйте программу pv для любого потокового канала, чтобы увидеть живой отчет о переданных данных. Может использоваться для любого применения с использованием труб. Это также отличный инструмент для определения скорости передачи на такие вещи, как USB, внешние диски, сетевые компьютеры.

dd if=infile | pv > outfile

Или для прямого копирования, просто используйте это:

pv infile > outfile

Пример:

sudo pv /dev/sda1 > /home/user/sda1.ext4.img

Типичный. Когда я что-то спрашиваю, я как-то нахожу ответ (даже если я искал часы... но волшебным образом я нахожу его ПОСЛЕ создания вопроса -.-). Во всяком случае для того, что я проверил с dd --help который упоминает в конце справки (я не могу поверить, что я не видел ЭТО) следующее:

Sending a USR1 signal to a running `dd' process makes it
print I/O statistics to standard error and then resume copying.

   $ dd if=/dev/zero of=/dev/null& pid=$!
   $ kill -USR1 $pid; sleep 1; kill $pid
   18335302+0 records in
   18335302+0 records out
   9387674624 bytes (9.4 GB) copied, 34.6279 seconds, 271 MB/s

Это означает, что в другом терминале вы должны запустить следующую строку, используя ID процесса того DD, который вы хотите проверить. Например, в моем случае это Process Id 4112. Вы можете увидеть идентификатор процесса, набрав ps -e и ищет дд или просто ps -e|grep dd и глядя на номер спереди. Запишите этот номер, а затем введите другое окно терминала kill -USR1 4112; sleep 1; Это даст мне время, секунды, прошедшие с момента его начала, и количество копий. По крайней мере, теперь я знаю, что копирование 1 ТБ информации занимает около 8 часов со скоростью около 40 МБ / с.

Что касается использования kill для отображения информации на Mac, вы должны передать ему -INFO флаг вместо -USR1 флаг. И помните, что он показывает информацию в терминале, где запущен ваш процесс dd, поэтому, если вы откроете новую вкладку для ввода kill -INFO $PID (где $PID это число, которое вы нашли с помощью ps -e | grep dd), вам придется переключиться обратно на вкладку, где dd работает, чтобы увидеть вывод.

Теперь, если бы я только мог понять, как отобразить этот вывод в виде ГБ или МБ вместо простых байтов...

Уже есть другой расширенный дд dcfldd которые делают много забавных вещей, как это вы просите http://dcfldd.sourceforge.net/

  1. sudo apt-get install dcfldd
  2. Вместо dd ты пишешь dcfldd
Другие вопросы по тегам