Поиск по сайту:

Как передавать файлы между двумя компьютерами с помощью команд nc и pv


Привет, дорогие читатели Linux! Представляю вам еще одну замечательную статью из нашей серии «Советы и рекомендации по Linux». На этот раз мы будем использовать две менее известные утилиты Linux, о которых вам следует знать.

В этой статье объясняется, как передавать файлы между двумя компьютерами Linux с помощью nc (сетевой утилиты) и pv (просмотра каналов). Strong>) команды, прежде чем двигаться дальше, позвольте мне объяснить, что это за две команды.

nc означает Netcat и часто упоминается как «Швейцарский армейский нож» — это сетевой инструмент, используемый для отладки и исследования сети, а также он используется для создания сетевых подключений с использованием TCP или UDP, сканирования портов, передачи файлов и многого другого. Он создан как надежный серверный компонент и специально используется в программах и скриптах, поскольку может генерировать практически любой тип сетевого соединения и имеет ряд встроенных функций.

Короче говоря, pv Pipe Viewer — это инструмент на базе терминала для мониторинга хода передачи данных по конвейеру. Он позволяет пользователю видеть ход обработки данных с помощью индикатора выполнения, показывает прошедшее время, процент выполнения, текущую пропускную способность. скорость, общий объем переданных данных и расчетное время завершения процесса.

Как отслеживать ход обработки данных с помощью команды pv (Pipe Viewer)

Давайте теперь двинемся дальше и посмотрим, как мы можем объединить обе команды для передачи файлов между двумя компьютерами Linux. Для целей этой статьи мы будем использовать две машины Linux следующим образом:

Machine A with IP : 192.168.0.4
Machine B with IP : 192.168.0.7

Примечание. Я настоятельно рекомендую не использовать netcat для отправки и получения данных через общедоступную сеть, поскольку он не использует никаких логинов или аутентификации. , единственным требованием является IP-адрес клиента и номер порта прослушивания, а данные, передаваемые по сети, не защищены, поэтому они всегда зарезервированы для опытных пользователей Linux и предпочтительнее использовать их в защищенной локальной сети.

В ситуациях, когда безопасность данных более важна, всегда используйте rsync через SSH или scp через SSH.

Теперь давайте начнем с очень простого примера команд nc и pv, но перед этим обе утилиты должны быть установлены в системе, если не установить их с помощью соответствующего менеджера пакетов дистрибутива. инструмент, как предложено:

yum install netcat pv        [On RedHat based systems]
dnf install netcat pv        [On Fedora 22+ versions]
apt-get install netcat pv    [On Debian and its derivatives]

Как перенести файлы между двумя компьютерами Linux?

Предположим, вы хотите отправить один большой файл с именем CentOS-7-x86_64-DVD-1503.iso с компьютера A на B по сети. , самый быстрый способ добиться этого с помощью nc — сетевой утилиты, используемой для отправки файлов по сети TCP, pv для отслеживания хода передачи данных и tar. утилита для сжатия данных для повышения скорости передачи.

На Linux-машине А

Сначала войдите в систему «A» с IP-адресом 192.168.0.4 и выполните следующую команду.

tar -zcf - CentOS-7-x86_64-DVD-1503.iso | pv | nc -l -p 5555 -q 5

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

  1. tar -zcf=tar — утилита ленточного архивирования, используемая для сжатия/распаковки архивных файлов и аргументов. -c создает новый архивный файл .tar, -f . укажите тип архивного файла и -z отфильтруйте архив через gzip.
  2. CentOS-7-x86_64-DVD-1503.iso=Укажите имя файла для отправки по сети. Это может быть файл или путь к каталогу.
  3. pv=Средство просмотра каналов для отслеживания хода обработки данных.
  4. nc -l -p 5555 -q 5=сетевой инструмент, используемый для отправки и получения данных через TCP, и аргументы, -l, используемые для прослушивания входящего соединения, - p 555 указывает используемый исходный порт, а -q 5 ждет определенное количество секунд, а затем завершает работу.

На Linux-машине B

Теперь войдите в систему «B» с IP-адресом 192.168.0.7 и выполните следующую команду.

nc 192.168.1.4 5555 | pv | tar -zxf -

Все, файл переносится на компьютер B, и вы сможете наблюдать, насколько быстро выполняется операция. Существует множество других замечательных вариантов использования команд nc (пока не рассмотренных, но скоро о них напишем) и pv (подробную статью об этом мы уже рассказывали здесь). , если вы знаете какой-либо пример, сообщите нам об этом в комментариях!