В этой статье предлагаю совершить трюк с утилитой netcat.
Всех категорически приветствую!
Показания
- Иногда существует потребность передать кучу файлов с одной машины на другую
- передать файлы огромного размера
и совсем не хочется заморачиваться с юзерами, правами доступов к этим файлам, ssh и т.д.
Решение
Существует замечательная утилита netcat.
Можно передавать файлы между linux машинами на максимально доступной скорости без привязок к юзерам правам и т.д. . Необходимо просто утилитой netcat на первой linux машине перенаправить на порт необходимый файл и забрать файл со второй машины, указав такой же порт.
на компе, с которого необходимо передать файл даём команды:
- переходим в нужную папку
linux_machine1$ cd /home/need_directory/
- архивируем в сжатый архив все файлы внутри
linux_machine1$ tar -zcvf big_archive.tar.gz ./*
- перенаправляем на порт 8888
linux_machine1$ nc -lp 8888 -q 1 < big_archive.tar.gz
где флаги -l listen ; -p порт ; -q заверишь процесс nc после передачи (секунды)
на компе, где будем принимать этот файл даём команды :
- переходим в нужную папку
linux_machine2$ cd /home/need_directory/
- с соседа linux_machine1 забираем файл с порта 8888
linux_machine2$ nc linux_machine1 8888 > big_archive.tar.gz
- распаковываем полученный сжатый архив в текущую директорию
linux_machine2$ tar xvzf big_archive.tar.gz
вместо имён linux_machine1 и linux_machine2 можете использовать ip адреса.
Итог
Передача огромного файла будет происходить на максимально доступной скорости, т.к. не используется шифрование. Да передача будет происходить в открытом виде, но прошу заметить, что вероятность скомпрометировать данную операцию (если вдруг перемещение происходит в интернете) стремится к нулю, т.к. всё выполняется довольно быстро, от момента выставления файла на прослушивание с порта, до момента начала "забора" этого файла с другой машины.
Спасибо за внимание. Посмотрите на моём канале другие полезные статьи, может они вам помогут решить ваши задачи.