Нет недостатка в программных решениях, которые могут помочь вам передавать файлы между компьютерами. Однако, если вы делаете это очень редко, типичные решения, такие как NFS и SFTP (через OpenSSH), могут оказаться излишними. Более того, эти службы постоянно открыты для приема и обработки входящих сообщений. При неправильной настройке это может сделать ваше устройство уязвимым для определенных атак.
netcat, так называемый швейцарский армейский нож TCP / IP, может использоваться как специализированное решение для передачи файлов через локальные сети или Интернет. Это также полезно для перемещения данных в / из виртуальных машин или контейнеров, если они не включены в эту функцию. Вы даже можете использовать его как механизм копирования и вставки между двумя устройствами.
Быстрые ссылки
Как установить netcat в разных дистрибутивах Linux
Большинство операционных систем Linux поставляются с предустановленной netcat. Откройте Терминал и введите:
netcat
Если команда не найдена, установите пакет, содержащий netcat, который является вариантом BSD. Существует также версия netcat для GNU, в которой меньше функций. Вам нужен netcat как на компьютере, получающем файл, так и на том, с которого вы его отправляете.
В дистрибутивах на основе Debian, таких как Ubuntu или Linux Mint, установите утилиту с помощью:
sudo apt install netcat-openbsd
Используя openSUSE, следуйте инструкциям в Эта страница именно для вашего раздачи.
В Arch Linux введите следующую команду:
sudo pacman -S openbsd-netcat
К сожалению, семейство RedHat не включает варианты netcat для BSD или GNU. По какой-то странной причине они решили использовать nmap-ncat. Хотя некоторые параметры командной строки похожи, они недоступны, например -N. Это означает, что вам придется заменить строку типа nc -vlN 1234> nc на nc -vl 1234> nc, чтобы она работала в RedHat / Fedora.
установить нкот В RedHat:
sudo yum install nmap-ncat
И в Fedora:
sudo dnf install nmap-ncat
Как использовать netcat для передачи файлов между компьютерами Linux
На компьютере, который получит файл, найдите IP-адрес, используемый во внутренней сети.
ip route get 8.8.8.8
расстояние "SRCВы увидите IP-адрес внутренней сети устройства. Если по какой-то причине результаты не актуальны, вы также можете попробовать:
ip address
На скриншоте, показанном в качестве примера, IP-адрес 10.11.12.10.
На том же компьютере, который получит файл, введите эту команду:
nc -vl 44444 > pick_desired_name_for_received_file
И на компьютере, который отправит файл, введите это и замените число 10.11.12.10 С IP, который вы обнаружили ранее:
nc -N 10.11.12.10 44444 < /path/to/file/you/want/to/send
Пути к каталогам и файлам могут быть абсолютными или относительными. Абсолютный путь/home/user/Изображения/file.png. Но если ты уже в главная / пользовательВы можете использовать относительный путь.Картинки / file.png”, Как показано на изображении выше.
В первой команде использовались два параметра: -v و - l، -v Подробный вывод распечатывает более подробную информацию, чтобы вы могли видеть, что происходит. -l Это заставляет инструмент «прослушивать» порт 44444, по сути открывая канал связи на приемнике. Если правила брандмауэра активны, убедитесь, что они не блокируют соединение.
Во втором вопросе -N Делает Netcat Он закрывается, когда передача завершена.
Обычно он производит Netcat В Терминале все получено. > Создает перенаправление для этого вывода. Вместо того, чтобы печатать его на экране, он отправляет весь вывод в файл, указанный после>. <Он работает в обратном порядке, принимая ввод из указанного файла вместо ожидания ввода с клавиатуры.
Если вы используете приведенные выше команды без перенаправления, например, NC -vl 44444 и NC -N 10.11.12.10 44444 Затем вы можете создать элементарный «чат» между двумя устройствами. Если вы введете что-то в одном терминале и нажмете Enter, это появится на другом компьютере. Вот как вы можете копировать и вставлять текст с одного устройства на другое. Нажмите на Ctrl + D (об отправителе) или Ctrl + C (в любом месте), чтобы закрыть соединение.
Улучшенная передача файлов
При отправке больших файлов вы можете легко сжать их, чтобы увеличить скорость передачи.
На принимающей стороне введите:
nc -vl 44444 | gunzip> pick_desired_name_for_file
На устройстве-отправителе введите следующее и замените номер 10.11.12.10 IP-адрес вашего приемника:
gzip -c /path/to/file/you/want/to/send | nc -N 10.11.12.10 44444
Папки отправки и получения
Очевидно, что иногда может потребоваться отправить сразу несколько файлов, например целую папку. Следующее нажатие также сжимает его перед отправкой по сети.
На принимающей стороне используйте эту команду:
nc -vl 44444 | tar zxv
На передатчике используйте:
tar czp /path/to/directory/to/send | nc -N 10.11.12.10 44444
Заключение
Желательно, чтобы вы использовали это только в своей локальной сети. Основная причина в том, что трафик из сети не зашифрован. Если вы отправляете это на сервер через Интернет, ваши пакеты данных могут быть перехвачены по сетевому пути. Но если передаваемые вами файлы не содержат конфиденциальных данных, это не проблема. Однако серверы обычно поставляются с предустановленным SSH для приема защищенных FTP-соединений, и вместо этого вы можете использовать SFTP для передачи файлов.