Итак, вот что происходит.
Я запустил резервное копирование диска на моем сервере через Linux live USB. Я начал копировать первый диск с помощью dd
команды vanilla; просто sudo dd if=/dev/sda of=/dev/sdc1
и потом я вспомнил , что это просто оставляет консоли пустой до тех пор, пока не закончится.
В любом случае мне нужно было запустить другое резервное копирование на тот же диск, поэтому я запустил его также с, sudo dd if=/dev/sdb of=/dev/sdc3 status=progress
а затем получил строку текста, которая показывает текущую скорость передачи, а также прогресс в байтах.
Я надеялся на метод, который показывает процент резервного копирования, а не подсчитывает, сколько байтов резервируется из 1,8 ТБ. Есть ли более простой способ сделать это, чем статус = прогресс?
источник
dd
что всеwrite()
системные вызовы уже завершены ,fsync
или ониclose
были заблокированы в ожидании записи на диск. При медленном USB-накопителе пороговые значения по умолчанию для буфера ввода-вывода в Linux, определяющие, насколько большими могут быть грязные буферы записи, ведут к качественно другому поведению, чем при работе с большими файлами на быстрых дисках, потому что буферы так же велики, как и то, что вы копируете, и по-прежнему занимает заметное время.dd
- действительно полезная информация, особенно для серверов, где вы не можете / не хотите устанавливатьpv
Мой инструмент для такого рода вещей
progress
:Я нахожу это особенно полезным, потому что:
pv
in pipe илиdcfldd
, когда я запускаю операцию, мне не нужно запускать другую команду, я могу отслеживать вещи по факту;kill -USR1
, что он работает практически с любой командой, мне не нужно всегда перепроверять man-страницу, чтобы убедиться, что я не случайно убил копию; также приятно, что при вызове без параметров он показывает ход выполнения любой распространенной команды «передача данных», выполняемой в данный момент, поэтому мне даже не нужно искать PID;pv -d
, опять же, мне не нужно искать PID.источник
--command <command-name>
.Запустите
dd
, затем в отдельной оболочке вызовите следующую команду:Это заставит pv получить статистику по всем открытым файловым дескрипторам
dd
процесса. Он покажет вам, где находится буфер чтения и записи.источник
/proc/$PID/fdinfo
позиции файлов, и на,/proc/$PID/fd
чтобы увидеть, какие файлы (и, следовательно, размеры). Так что да, очень крутая и хорошая идея для функции, но я бы не назвал ее «удивительной», потому что есть Linux API, которые позволяют опрашивать позиции файлов другого процесса.pv
трубопроводов заранее.) Конечно, я предполагал столько же, как только увидел, что это работает.Там есть альтернатива
dd
:dcfldd
.http://dcfldd.sourceforge.net/
https://linux.die.net/man/1/dcfldd
источник
В процентном соотношении вам придется выполнять некоторые математические операции, но вы можете получить прогресс dd в удобочитаемой для человека форме, даже после того, как уже начали, выполнив
kill -USR1 $(pidof dd)
Текущий процесс дд будет отображаться как:
Скопировано 11117279 байт (11 МБ, 11 МБ), 13,715 с, 811 КБ / с
источник
status=progress
дает