pv



Предыдущая |

Нередко при копировании хочется увидеть прогресс. На самом деле есть два способа. Первый метод это копировать отдельный файл с помощью pv

pv file1.txt > file2.txt

а также есть способ через rsync. Очень удобен тем, что можно настроить вывод процентов на многое, например, на создание архивов.

Далее без сортировки просто накидаю, что нашёл.

 

---

Мне нужно скопировать очень большой каталог (говорящий в терабайтах здесь) и хочу следить за прогрессом.

 
 

Я обнаружил, что pv – хорошая утилита, но как я могу использовать ее для рекурсивного копирования каталогов? ( pv src > dst не работает, потому что это каталоги)

PS: Запуск на OS X Mountain Lion, pv был установлен из Mac Ports

6 Solutions collect form web for “информация о ходе работы через pv для копирования каталога”

Использовать rsync --progress [SRC] [DST]

Проверьте страницу man rsync потому что у нее много очень полезных опций. -a для архива – хорошее начало, но это зависит от ваших точных требований.

Копирование через трубу излишне замедляет процесс копирования, особенно если это файлы.

Вы можете использовать tar или pax или cpio :

 mkdir -p dst && (cd src && tar cf - .) | pv -trb | (cd dst && tar xpf -) 

Тар.

 tar -cf - /var/log/ | pv | tar -C . -x 

Пример:

 # tar -cf - /var/log/ | pv | tar -C . -x tar: Removing leading `/' from member names 58MB 0:00:05 [ 2.2MB/s] [ <=> 

Вот несколько команд для копирования каталогов с информацией о ходе.


Если есть много небольших файлов:

 cp -av sourcedir targetdir | pv -l -s filecount > logfile 

Это сообщит о прогрессе, основанном на количестве копируемых файлов.

Вы можете перенаправить на /dev/null если вам не нужен logfile .

Используйте следующую команду для получения filecount :

 find sourcedir | wc -l 

Если есть несколько огромных файлов:

 tar c sourcedir | pv -s size | tar x -C targetdir 

Это будет сообщать о прогрессе, основанном на байтах, которые копируются.

targetdir должен существовать.

Используйте следующую команду для получения size :

 du -sh sourcedir 

Если вы хотите использовать rsync:

 rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile 

Получите filecount как показано выше.

Если вы копируете в той же системе, то rsync -a практически совпадает с cp -a . Преимущества rsync – это когда вы копируете по сети, или если вы обновляете (или сравниваете) предыдущую копию.

Подробнее см. Здесь:

  • Оцените время или работу, оставшуюся до конца для rsync?
  • Сравнение каталогов, но не содержимого файлов

Вы можете сделать du -b /directory/ как для источника, так и для назначения, пока выполняется обычная команда копирования, и сравните два. Это так же эффективно и не замедляет процесс копирования, проталкивая его через трубу.

 find source-dir -print0 | xargs -0 -I % pv % > dest-dir/% 

 

---

 

 

Как использовать команду pv в Linux?

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

 

Синтаксис команды pv:

 

pv file
pv options file
pv file > filename.out
pv options | command > filename.out
comand1 | pv | command2 

 

Параметры, используемые с pv, делятся на три категории: переключатели отображения, модификаторы вывода и общие параметры.

Некоторые опции для переключения отображения.

  • Чтобы включить панель дисплея, используйте опцию —p.
  • Чтобы просмотреть прошедшее время, используйте параметр —timer.
  • Чтобы включить таймер ETA, который приблизительно говорит, сколько времени потребуется до завершения операции, используйте параметр —eta. Предположения основаны на предыдущих скоростях передачи и общем размере данных.
  • Чтобы включить счетчик скорости, используйте параметр —rate.
  • Чтобы отобразить общий объем уже переданных данных, используйте опцию —bytes.
  • Чтобы отобразить прогресс, сообщение о целых процентах вместо визуальной индикации, используйте параметр —n. Это может быть полезно при использовании pv с диалоговой командой для отображения прогресса в диалоговом окне.

Некоторые параметры в выходных модификаторах.

  • Чтобы дождаться передачи первого байта перед отображением информации о ходе работы, используйте параметр —wait.
  • Чтобы подать общий объем данных в байтах SIZE при вычислении процента и ETA, используйте параметр — размер SIZE.
  • Чтобы указать секунды между обновлениями, используйте опцию —interval SECONDS.
  • Используйте параметр —force для принудительной операции. Эта опция заставляет pv отображать визуальные эффекты, когда стандартная ошибка не является терминалом.
  • Общие параметры: -help для отображения информации об использовании и —version для отображения информации о версии.

Использование команды pv с примерами

  1. Если никакая опция не включена, команда pv работают с параметрами —p, -t, -e, -r и -b по умолчанию.

Например, чтобы скопировать файл opensuse.vdi в /tmp/opensuse.vdi, запустите эту команду и посмотрите индикатор выполнения в screencast:

# pv opensuse.vdi> /tmp/opensuse.vdi

 

 

  1. Чтобы сделать zip-файл из файла /var/log/syslog, выполните следующую команду.

 

# pv /var/log/syslog | zip> syslog.zip

 

 

  1. Чтобы подсчитать количество строк, слов и байтов в файле /etc/hosts, показывая только индикатор выполнения, выполните следующую команду.

 

# pv -p /etc/hosts | wc

 

 

  1. Можно следите за ходом создания файла резервной копии с помощью утилиты tar.

 

# tar -czf - ./Downloads/ | (pv -p -timer -rate -bytes> backup.tgz)

 

 

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

 

# tar -czf - ./Documents/ | (pv -n> backup.tgz) 2> & 1 | Диалоговое окно «Прогресс» 10 70

 

 

 

 

---

 

Согласно официальной документации, команда PV контролирует поток данных через pipe. Команда выводит следующую информацию о текущей операции: время , прошедшее, процент завершения (с прогресс бар), текущую скорость, пропускная способность общего объема передаваемых данных, и ETA.

“Для того, чтобы использовать его, вставьте его в pipeline между двумя процессами, с соответствующими опциями,” объясняет man page. “Его стандартный ввод будет передан на свой стандартный вывод и прогресс будет показан на стандартной ошибке.”

Теперь, покажем использование команды PV на примере. Но до этого, убедитесь, что утилита присутствует в вашей системе. Если нет, то вы можете легко загрузить и установить ее на системах Debian (например, Ubuntu) с помощью следующей команды:

sudo apt-get install pv

 

Теперь, перейдем к примеру. На следующем рисунке показана команда PV в действии, когда я копирую, изображений хранится внутри директории на моем флэш-накопителе на рабочем столе моей системы:

Как вы можете видеть, команда PV отображается индикатор выполнения, а также другую полезную информацию. Это поведение по умолчанию команды. Тем не менее, если вы хотите ограничить вывод, вы можете сделать это, используя переключения дисплеев. Например, следующая команда будет отображаться только индикатор прогресса, и ничего больше.

pv -p /media/himanshu/1AC2-A8E3/Maldives-2016/* | gzip > ./Desktop/trip-pictures.gz

 

Это потому, что мы использовали -p переключатель дисплея, который говорит pv только включить индикатор выполнения. Для получения полного списка переключателей дисплея, смотрите команды man page.

Тогда есть некоторые выходные модификаторы. Например, при использовании вариант с командой -W или –wait скажет ему, чтобы ждать, пока первый байт не был передан, прежде чем показывать какую – либо информацию о ходе работы или каких – либо вычисления ЕТА. Это особенно полезно в тех случаях, когда допустим требует дополнительной информации, прежде чем начнет.

И, наконец, команда PV также предлагает некоторые модификаторы передачи данных. Например, если вы хотите, вы можете ограничить передачу определенного количества байтов в секунду. Если взглянуть на скриншот ранее, скорость передачи данных составляет более 18MBps. Теперь предположим, что вы хотите ограничить до 5Mbps, для этого вам необходимо выполнить следующую команду:

pv -L 5m /media/himanshu/1AC2-A8E3/Maldives-2016/* | gzip > ./Desktop/trip-pictures.gz

 

Вариант -L с последующим значением ‘5m’ делает трюк здесь. См, приведенную выше команду в действии на следующем скриншоте:

“Суффикс ‘k’, ‘m’, ‘g’, или ‘t’ могут быть добавлены для обозначения килобайт (* 1024), мегабайтах, и так далее,” объясняет man page. Более подробную информацию о передачи данных, а также модификаторов передачи данных также доступна при помощи команды man page.

Команда Progress в Linux

Progress (ранее известный как CV) это утилита командной строки, которая обеспечивает прогресс для текущих операций, связанных  с основными командами Coreutils, такие как cp, mv, dd, tar, gzip/gunzip, cat, и многое другое.” Он также может показать расчетное время и пропускную способность, а также обеспечивает режим ‘top-like’, как (мониторинг),” говорится в официальной документации.

 

Перед установкой Прогресс, вы должны сначала убедиться, что библиотека ‘Ncurses’ есть в вашей системе, так как команда зависит от этой библиотеки. Если ее нет, то пользователи Debian / Ubuntu можно загрузить и установить пакет Ncurses с помощью следующей команды:

sudo apt-get install libncurses5-dev

 

Затем загрузите командный пакет Progress из репозитория GitHub с помощью следующей команды:

git clone https://github.com/Xfennec/progress.git

 

Войдите в каталог «Progress» и выполните следующие команды:

makesudo make install

 

Вот и все. Команда Progress теперь будет установлена на вашем компьютере Linux. Следующий скриншот (взят из проекта на странице GitHub ) показывает команду в действии:

Как вы можете видеть, команда Progress дает вам информацию обо всех текущих операциях, которые включают команды Coreutils. Как и любой другой инструмент командной строки Linux, Progress также предлагает несколько вариантов командной строки. Ниже приведен список опций, которые могут быть полезными для вас:

  • -m (–monitor) : цикл, пока наблюдаемые процессы по-прежнему работает
  • -М (–monitor-continuously) : мониторинг, никогда не останавливается (аналог прогресса )
  • -с (–command cmd) : мониторинг только этой команды название (например, Firefox). Эта опция может быть использована несколько раз в командной строке.
  • -p (–pid id) : мониторинг только этот числового идентификатора процесса (например: `pidof Firefox`). Эта опция может быть использована несколько раз в командной строке.
  • -i (–ignore-file file) : не сообщает процесс “file”. Если файл не существует, вы должны дать полный и чистый абсолютный путь. Эта опция может быть использована несколько раз в командной строке.

 

---

 

PV — это сокращенно pipeviewer (просмотровщик пайпов), показывает cкорость обработки данных.

Установка pv в Ubuntu проста (в Debian аналогично):

#aptitude install pv


Примеры использования:

1. Предположим, что у вас есть файл access.log в несколько гигабайт, который содержит логи сервера. Вы хотите сжать его так:

#gzip -c access.log > access.log.gz

Так как файл большой то нет понимания насколько долгим будет процесс сжатия.

Используя pv можно точно оценить время, которое займет данный процесс.

#pv access.log | gzip > access.log.gz

335MB 0:00:19 [49.3MB/s] [=> ] 18% ETA 0:00:59

2. Копирование большого количества данных через сеть с использованием утилиты nc.

Предположим, у есть два компьютера A и B. Хотим перенести директорию с A на B. Наибыстрейший путь это использовать tar и nc.

# на компе A с IP 192.168.30.10
$ tar -cf — /path/to/dir | pv | nc -l -p 7777 -q 5

# на компе B
$ nc 192.168.1.100 7777 | pv | tar -xf -

 Вот простейшие примеры. Строив сложные команды можно получать дополнительную информацию по процессам.

 

---

 

Один мой друг сказал по поводу pv следующее «Я админю семь лет, мне нужна была эта тулза десятки раз, а я даже не знал что она существует». В размышлениях над тем как заполучить инвайт на Харбе, я набрал в поиске pv. И ничего не нашел.


И так pv — это сокращенно от pipeviewer, то есть ни много не мало как просмотрщик пайпов. Про эффективность использования пайпов расказывать не буду, ни для кого это не секрет. Единственное, «но» в работе с ними — это то, что набрав команду и нажав Enter часто не хватает самой малости — знать сколько времени займет ее выполнение. Именно cкорость обработки данных и будет нам показывать pv.

С лирикой покончено, перейдем к примерам.

Установка pv в Debian довольно тривиальна.
% sudo aptitude install pv

Дальше вводная, допустим вы такой же как и я счасливый обладатель каких-нибудь полезных логов и в какой-то момент у вас дошли руки их заархивировать, например так
% cat rt94-171-06 | gzip > rt94-171-06.gz
Есть мысли, сколько времени займет эта операция?

Тоже самое при помощи pv
%pv rt94-171-06 | gzip > rt94-171-06.gz
128MB 0:00:15 [ 9.1MB/s] [=====>.....................] 18% ETA 0:01:07

Наглядно видно, что через пайп за 15 секунд прошло 128Мб — это 18% от всего объема, операция займет еще минуту и 7 секунд.

Может показаться, что pv это такая замена для cat, но на самом деле ее возможности намного шире. Например, упаковываем весь каталог в сжатый архив
%tar -czf - . | pv > out.tgz
21.9MB 0:00:15 [1.47MB/s] [...<=>.....................]

Уже неплохо, но хочеться большего, чтобы показывалось время окончания работы. Для этого всего лишь надо при помощи ключа -s передать pv размер каталога в байтах
%tar -czf - . | pv -s $(du -sb | grep -o '[0-9]*') > out.tgz
44.3MB 0:00:27 [1.73MB/s] [>..........................] 0% ETA 13:36:22

У меня вся операция займет 13 с половиной часов. Хех, накопил =)

Можно так же составлять команды из несколько копий pv.
%tar -cf - . | pv -cN tar -s $(du -sb | grep -o '[0-9]*') | gzip | pv -cN gzip > out.tgz
tar: 97.1MB 0:00:08 [12.3MB/s] [>......................] 0% ETA 1:50:26
gzip: 13.1MB 0:00:08 [1.6MB/s] [....<=>................]

Ключ -c нужен, чтобы несколько копий pv не выводили информацию друг поверх друга. Ключ -N дает имя шкале.

Ну и под конец забавный пример с одного англоязычного блога о Линуксе
%pv /dev/urandom > /dev/null
18MB 0:00:05 [ 3,6MB/s] [...<=>............................]

 

---

 

 

pv — это утилита которая имеет сокращение от pipeviewer и позволяет пользователю видеть прогресс выполнение той или иной команды по конвейеру и предоставляя информацию (прошедшее время, процент завершения (с индикатором выполнения), текущую пропускную способность, общий объем данных и ETA) — это просмоторщик пайпов.

Установка pv в Debian/Ubuntu

Установка pv утилиты, очень простая, выполняем:

sh
1 lines
 
 
 
 
 
 
# aptitude install pv
 
 
 
 

или

sh
1 lines
 
 
 
 
 
 
# apt-get install pv
 
 
 
 

Установка pv в CentOS/Fedora/RedHat

Для начала, подключаем репозиторий EPEL:

Включить EPEL репозиторий

Установка pv утилиты, очень простая, выполняем:

sh
1 lines
 
 
 
 
 
 
# yum install pv
 
 
 
 

Установка pv в FreeBSD

Установка pv утилиты, очень простая, выполняем:

sh
2 lines
 
 
 
 
 
 
# cd /usr/ports/sysutils/pv/
# make install clean
 
 
 
 

Или:

sh
1 lines
 
 
 
 
 
 
# pkg_add -r pv
 
 
 
 

Установка pv в Mac OS X

Устанавливаем homebrew: Установка homebrew на Mac OS X после чего, выполняем:

sh
1 lines
 
 
 
 
 
 
$ brew·install pv
 
 
 
 

Установка pv в OpenSolaris

Если Вы пользователь OpenSolaris:

sh
1 lines
 
 
 
 
 
 
$ pfexec pkg install pv
 
 
 
 

Установка pv для других Unix/Linux

Если не имеется пакета для установки, то переходим на официальную страницу pv, загружаем архив и выполняем ряд действий:

sh
3 lines
 
 
 
 
 
 
$ tar -zxf pv-version.tar.gz
$ cd pv-version
$ ./configure && sudo make install
 
 
 
 

Опции для утилиты pv

pv принимает множество опций и сейчас я предоставлю их.

Коммутаторы (Display Switches)

Если не указаны опции для вывода, pv ведет себя так, как если бы вы задали «-p», «-t», «-e», «-r» и «-b» (т. е. все включено). В противном случае будут показаны только те типы вывода, которые явно включены:

  • -p, —progress — Включает индикатор выполнения. Если стандартный ввод не является файлом и не задан размер (с модификатором «-s»), индикатор выполнения не может отобразить корректно данные, насколько близок к завершению передачи, поэтому он просто перемещается влево и вправо, чтобы показать что данные перемещаются.
  • -t, —timer — Включить таймер. Это покажет общее время, в течение которого pv работает.
  • -e, —eta — Включить таймер ETA. Утилита попытается угадать, как долго до завершения, исходя из предыдущих скоростей передачи и общего размера данных. Этот параметр не будет иметь эффекта, если общий размер данных не может быть определен.
  • -r, —rate — Включите счетчик скорости. Это покажет текущую скорость передачи данных.
  • -b, —bytes — Включите счетчик для общего отображения байт. На нем отобразится общий объем переданных данных.
  • -n, —numeric — Цифровой выход. Вместо того, чтобы визуально показывать прогресс, pv даст целочисленный процент, по одной на строку, по стандартной ошибке, подходящий для пайпа (через свернутое перенаправление) в диалоговом окне (dialog). Обратите внимание, что опция «-f» не требуется, если используется «-n» опция.
  • -q, —quiet — Запретить вывод. Полезно, если опция «-L» используется сама по себе, чтобы просто ограничить скорость передачи в пайпе.

Модификаторы вывода

  • -W, —wait — Ждать, пока первый байт не будет перенесен, прежде чем показывать какую-либо информацию о ходе или вычислять любые ETA. Полезно, если программа к которой вы подключаетесь, требует дополнительной информации до ее запуска, например, для передачи данных в gpg или mcrypt, которые требуют кодовой фразы, прежде чем данные могут быть обработаны.
  • -s SIZE, —size SIZE — Предположим, что общий объем передаваемых данных — это SIZE байт при вычислении процентов и ETA. Те же суффиксы «k», «m» и т. Д. Могут использоваться с «-L».
  • -l, —line-mode — Вместо подсчета байтов, подсчитываеться строки (символы новой строки). Полоса выполнения будет двигаться только при обнаружении новой строки, а значение, переданное в параметр «-s», будет интерпретироваться для счета строки.
  • -i SEC, —interval SEC — Ждать SEC секунд между обновлениями. Значение по умолчанию — обновлять каждую секунду. Обратите внимание, что это может быть десятичное число, такое как 0,1.
  • -w WIDTH, —width WIDTH — Предположим, что терминал имеет ширину WIDTH, вместо того, чтобы пытаться его угадать (или назначить 80, если это невозможно предугадать).
  • -H HEIGHT, —height HEIGHT — Предположим, что терминал имеет HEIGHT высоту, вместо того, чтобы пытаться его угадать (или назначить 25, если это невозможно предугадать).
  • -N NAME, —name NAME — Префикс выводимой информации с помощью NAME. Полезно в сочетании с «-c», если у вас сложный пайп и вы хотите, чтобы он мог разделить вывод на разные части.
  • -f, —force — Пренудительный вывод. Обычно pv не выводит никакого визуального вывода, если стандартная ошибка не является терминалом. Этот параметр заставляет это показать.
  • -c, —cursor — Используйте escape последовательности позиционирования курсора вместо использования возврата каретки. Это полезно в сочетании с «-N (name)», если вы используете несколько pv запросов и соединяете его в один длинный конвейер.

Модификаторы передачи данных

 
  • -L RATE, —rate-limit RATE — Ограничьте передачу до максимального RATE байта в секунду. Суффикс «k», «m», «g», или «t» могут быть добавлены для обозначения килобайт (*1024), мегабайт и т. д.
  • -B BYTES, —buffer-size BYTES — Использовать размер буфера передачи BYTES байтов. Суффикс «k», «m», «g», или «t»могут быть добавлены для обозначения килобайт (*1024), мегабайт и т. д. Размер буфера по умолчанию — это размер блока файловой системы входного файла, умноженный на 32 (максимальный 512kb) или 400 кбайт, если размер блока не может быть определен.
  • -R PID, —remote PID — Если PID является экземпляром pv, который уже запущен, -R PID заставит этот экземпляр действовать так, как если бы ему была назначена командная строка этого экземпляра. Например, если запустить «pv -L 123k» и он имеет 9876 ID процесс, тогда запуск «pv -R 9876 -L 321k» заставит его начать использовать ограничение скорости 321k вместо 123k. Обратите внимание, что во время работы некоторые параметры не могут быть изменены, например «-c», «-l» и «-f».

Общие опции

  • -h, —help — Выводит показать справку об использовании данной утилиты и завершает работу.
  • -V, —version — Выводит версию ПО и завершает работу.

ФОРМАТИРОВАНИЕ

Если задана опция «-F», формат вывода можно определить строкой формата. Внутри этой строки могут использоваться следующие последовательности:

  • %p — Индикатор выполнения. Развертывается, чтобы заполнить оставшееся пространство. Следует указывать только один раз. Эквивалентно «-р» опиции.
  • %t — Пройденное время. Эквивалентно «-t» опции.
  • %e — Оставшееся время (ETA). Эквивалентно «-e»опции.
  • %I — Время завершения (ETA). Эквивалентно «-I»опции.
  • %r — Текущая скорость передачи данных. Эквивалентно «-r» опции.
  • %a — Средняя скорость передачи данных. Эквивалентно «-a» опции.
  • %b — Байты, передаваемые до сих пор (или строки, если указано «-l» опция). Эквивалентно «-b» опции.
  • %T — Процент используемого буфера передачи. Эквивалентно «-T» опции. Показывает «{—-}» если передача выполняется с помощью splice, поскольку сплайсинг в/из пайп(а) не использует буфер.
  • %nA — Показать последние n записанных байтов, (например, %16A — последние 16 байт). Показывает только точки, если передача выполняется с помощью splice, поскольку сплайсинг в/из пайп(а) не использует буфер.
  • %N — Префикс имени, присвоенный «-N» опцией.
  • %% — Один %. Стандартная строка, эквивалентная включению всех переключателей вывода (display switches), `%N %b %T %t %r %a %p %e’.

Использование утилиты pv в Unix/Linux

Например, можно использовать утилиту pv вместо cat, следующим образом:

sh
2 lines
 
 
 
 
 
 
# pv linux-notes.org.zone.txt | gzip > linux-notes.org.tar.gz
963 MB 0:00:50 [2.04MiB/s] [======================>.................] 10% ETA 0:04:50
 
 
 
 

Собственно, все наглядно выглядит. Не правда ли?

Давайте упакуем некоторую папку в архив:

sh
3 lines
 
 
 
 
 
 
# tar -czf - backUPs | pv > backUPs.tgz
455MiB 0:00:13 [35.7MiB/s] [ <=> ]
 
 
 
 
 

Наглядно, но не знаешь когда операция завершиться, по этому, давайте добавим ключ «-s» чтобы вывести ETA, например:

sh
2 lines
 
 
 
 
 
 
# tar -czf - backUPs | pv -s $(du -sb backUPs| grep -o '[0-9]*') > backUPs.tgz
100MB 0:00:50 [3.88MB/s] [>..........................] 20% ETA 0:04:50
 
 
 
 

Так же, можно составлять команды из несколько копий pv:

sh
3 lines
 
 
 
 
 
 
# tar -cf - backUPs | pv -cN tar -s $(du -sb ./backUPs | grep -o '[0-9]*') | gzip | pv -cN gzip > backUPs.tgz
tar: 97.1MB 0:00:08 [12.3MB/s] [>......................] 0% ETA 1:50:26
gzip: 13.1MB 0:00:08 [1.6MB/s] [....<=>................]
 
 
 
 
 

Можно выводить прогресс-бар в виде цифр (в столбик), например:

sh
9 lines
 
 
 
 
 
 
$ tar -czf - backUPs | pv -n > backUPs.tgz
2
4
6
8
10
12
......
100
 
 
 
 

Такс, например, вам нужно ограничить скорость изменять скорость передачи данных через pv утилиту. Например, я использовал -L для ограничения скорости передачи данных до  4МБ/с:

sh
4 lines
 
 
 
 
 
 
$ tar -czf - backUPs | pv -L 4m > backUPs.tgz
30MiB 0:00:08 [4.17MiB/s] [ <=> ]
 
 
 
 
 
 

Как я уже описывал разные опции, но опишу опции еще раз:

  • -c — Данная опция не выводит информацию друг поверх друга.
  • -N — Называем шкалу определенным именем.

Можно поигратся и выполнить:

sh
2 lines
 
 
 
 
 
 
# pv /dev/urandom > /dev/null
66MB 0:00:44 [ 6.8MB/s] [...<=>............................]
 
 
 
 

Чтобы узнать как быстро компьютер читает с /dev/zero, выполните:

sh
1 lines
 
 
 
 
 
 
$ pv /dev/zero > /dev/null
 
 
 
 

Обнуление диска, можно выполнить следющим образом:

sh
1 lines
 
 
 
 
 
 
# pv < /dev/zero > /dev/sda
 
 
 
 

Симуляция ввода:

sh
1 lines
 
 
 
 
 
 
$ echo "You could simulate some text here" | pv -qL 10
 
 
 
 

Чтобы проверить тест пропускной способности сети ssh, выполните:

sh
1 lines
 
 
 
 
 
 
$ yes | pv | ssh $your_host_here "cat > /dev/null"
 
 
 
 

Или:

sh
1 lines
 
 
 
 
 
 
$ pv /dev/zero|ssh $your_host_here 'cat > /dev/null'
 
 
 
 

И так, команда что выше, подключается к хосту через ssh и отображает скорость передачи в реальном времени, направляя все переданные данные в /dev/null.

Пример использования pv и dd утилиты:

sh
1 lines
 
 
 
 
 
 
# dd if=/dev/sdc bs=4096 | pv -s 2G | sudo dd bs=4096 of=~/USB_BLACK_BACKUP.IMG
 
 
 
 

Чтобы поиграться, выполните:

sh
1 lines
 
 
 
 
 
 
$ curl -s http://artscene.textfiles.com/vt100/movglobe.vt | pv -q -L 9600
 
 
 
 

Используя инструмент pv и dialog, вы можете создать панель выполнения следующим образом:

sh
1 lines
 
 
 
 
 
 
# tar -czf - ./home/captain/backups/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70
 
 
 
 

Работа pv + mysql в Unix/Linux

Создать mysqldump можно так:

sh
1 lines
 
 
 
 
 
 
$ pv my_DB.sql.gz | gunzip | mysql -uroot -p my_DB
 
 
 
 

Или:

sh
1 lines
 
 
 
 
 
 
$ mysqldump -uroot -p my_DB | pv | gzip -9 >m y_DB.sql.gz
 
 
 
 

Влить созданный mysqldump можно так:

sh
2 lines
 
 
 
 
 
 
$ zcat my_DB.sql.gz | pv -cN zcat | mysql -uroot -p my_DB
 
 
 
 
 

Более нагляднее, будет:

sh
1 lines
 
 
 
 
 
 
$ zcat my_DB.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` | mysql -uroot -p my_DB
 
 
 
 
 

Чтобы сделать его еще приятнее, вы можете добавить progres NAME, например:

sh
1 lines
 
 
 
 
 
 
# zcat my_DB.sql.gz | pv --progress --size `gzip -l %s | sed -n 2p | awk '{print $2}'` --name ' Importing.. ' | mysql -uroot -p my_DB
 
 
 
 
 

Вот  и все, статья «Утилита pv — прогресс bar для консольных утилит в Unix/Linux» завершена.