Назад | Перейти на главную страницу

Как я могу узнать, работают ли netcat и dd?

Я работаю на сервере A (Источник):

dd bs=16M if=/dev/sda|bzip2 -c|nc serverB.example.net 19000

На сервере B (пункт назначения):

nc -l -p 19000|bzip2 -d|dd bs=16M of=/dev/sdb

Мне нужно где-то увидеть прогресс? (A / dev / sda сервера составляет 50 ГБ)

Я ждал 20 минут, но оба все еще работают, как я могу узнать, что он действительно передает данные и т. Д.?

¿Пробовали ли вы pv? http://www.ivarch.com/programs/pv.shtml

dd bs=16M if=/dev/sda|bzip2 -c| pv | nc serverB.example.net 19000
nc -l -p 19000| pv | bzip2 -d| dd bs=16M of=/dev/sdb

удачи!

Отправить dd обработать USR1 сигнал:

$ dd if=/dev/urandom of=/dev/null &
[1] 977
$
$ kill -USR1 977
274647+0 records in
274646+0 records out
140618752 bytes (141 MB) copied, 17.3286 s, 8.1 MB/s
$

Проверьте страницу руководства для dd в вашей ОС, но она должна поддерживать сигнал USR1, который даст вам информацию о ходе выполнения. Если вы знаете pid процесса, просто отправьте ему «kill -USR1 $ pid», и он покажет вам, как далеко он находится.

Найдите PID процесса, для которого вы хотите проверить ввод-вывод, в вашем случае dd на сервере b было бы хорошее место, чтобы посмотреть тогда

cat /proc/<PID>/io

посмотри на значение для wchar которое должно быть записанным значением в байтах.

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

dd bs=16M if=/dev/sda|bzip2 -c|pv|nc serverB.example.net 19000
225MB 0:04:48 [ 799kB/s] [                    <=>                            ]

Ты можешь использовать iftop чтобы увидеть сетевой трафик или iotop чтобы увидеть использование ввода-вывода.

watch -d -n 1 ifconfig на сервере B. Будет выделен весь полученный трафик (пакеты / байты RX). Не рассчитывайте на точность значений, если вы используете 32-битный дистрибутив (вы все равно можете увидеть, работает ли он).

Более новые версии dd в GNU-Coreutils (> 8.24) теперь включают status аргумент, чтобы избежать всех pv и USR1 сигнальные хаки:

dd if=/dev/urandom of=/dev/null status=progress

Если на Mac:

brew install coreutils
# All commands have been installed with the prefix 'g'
gdd if=/dev/urandom of=/dev/null status=progress