OS

Передача файлов в консоли между серверами (netcat)

Читая книгу ”High Performance MySQL, Second Edition”, наткнулся на полезный совет (теоретически я этот метод знал, но ни назу не применял).

Есть полезная программа nc, также известная, как netcat. Применений у неё много, и все связаны с сетевым взаимодействием.

Вспомните, как вы обычно передаёте файлы между серверами. Обычно процесс заключается в создании архива на одном сервере, передача его по ftp/scp/sftp/etc на другой сервер, затем разворачивание этого архива. Операций много, причём если файлы большие, то нужно иметь достаточно много места под создание архива.

С помощью nc это делается быстрее, удобнее и без накладных затрат.

На втором сервере запускается команда, которая будет принимать поток данных и передавать его на STDIN в tar (опция ‘-‘):

server2$ nc -l -p 12345 | tar xvzf -

На первом сервере запускается процесс создания архива с выдачей разультата в STDOUT, который передаётся через nc на на второй сервер, где tar уже приготовлен к приёму потока данных:

server1$ tar cvzf - /home/user/directory | nc -q 1 server2 12345

Единственное требование - указанный порт (12345) на server1 должен быть открыт для доступа с server2. Порт можно использовать любой другой.

Comments