1

Я часто записываю файлы ISO на флэш-накопители USB и пытаюсь найти способ контролировать состояние записи. Погуглив это, я нашел множество решений, включая pv , dcfldd и сигнал USR1 для команды dd .

Во всех случаях это выглядит так:

  1. Файл записывается на флэш-накопитель со скоростью около 100 МБ / с.
  2. Передача заканчивается (или, возможно, зависает на 99,99%) менее чем за 10 секунд
  3. Команда передачи остается без ответа в течение нескольких минут, даже не реагируя на прерывания
  4. Передача заканчивается

Я ожидаю, что поведение будет относительно медленной записью, возможно, около 5 МБ / с, и индикатор выполнения, который прогрессирует равномерно от 0% до 100%. Кажется, что файл быстро записывается в какой-то буфер, а затем медленно записывается на диск.

Вот некоторые команды, которые я пробовал, все с одинаковым результатом:

# function vdd {
>     sudo dd "$@" &
>     sudo sh -c "while pkill -10 ^dd$; do sleep 5; done"
> }
# vdd bs=4096 if="/path/to/ubuntu-15.04-desktop-amd64.iso" of=/dev/sdb
dcfldd bs=4096 if="/path/to/ubuntu-15.04-desktop-amd64.iso" of=/dev/sdb
pv "/path/to/ubuntu-15.04-desktop-amd64.iso" | dd bs=4096 of=/dev/sdb
pv -B 4096 "/path/to/ubuntu-15.04-desktop-amd64.iso" > /dev/sdb

Я искал на страницах man для dd , pv и dcfldd слово "flush" безрезультатно ...

1 ответ1

1

Если вам это нужно для инструмента Cli

USB="/dev/sdb"
ISO_IMAGE="/path/to/ubuntu-15.04-desktop-amd64.iso"
SIZE=$(du -h -B1 "$ISO_IMAGE" | awk '{print $1}')

dd if="$ISO_IMAGE" | pv -s "$SIZE" | dd of="$USB" bs=4M oflag=dsync

Здесь dd попросит полностью синхронный вывод на диск.

Вы упомянули flush, вы, вероятно, захотите использовать его для некоторого пользовательского интерфейса для построчной записи прогресса с помощью pv -n .

 USB="/dev/sdb"
 ISO_IMAGE="/path/to/ubuntu-15.04-desktop-amd64.iso"
 SIZE=$(du -h -B1 "$ISO_IMAGE" | awk '{print $1}')

 (dd if="$ISO_IMAGE" | pv -n -s "$SIZE" | dd of="$USB" bs=4M oflag=dsync) 2>&1 | \
  yad --center --borders=6 --title="Image writer" --text="$(echo -e "Writing $(basename "$ISO_IMAGE"):")"\
        --width=300 --progress --no-buttons --auto-close --image=system-run --window-icon=drive-removable-media-usb

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .