- Передача файлов по сети Linux
- Передача файлов по сети Linux
- 1. Утилита nc
- 2. Передача файлов ssh
- 3. Передача файлов по FTP
- 4. Как передать файл в rsync
- 5. Сервер NFS
- 6. Сервер Samba
- 7. KDE-Connect
- Выводы
- Как использовать команду Linux FTP для передачи файлов
- Подготовка
- Установление FTP-соединения
- Общие команды FTP
- Загрузка файлов с помощью команды ftp
- Загрузка файлов с помощью команды FTP
- Выводы
Передача файлов по сети Linux
Мне, как владельцу персонального компьютера и ноутбука часто приходится передавать файлы с одного устройства на другое. Внешние жесткие диски и флешки использовать не всегда удобно, они актуальны для больших файлов, где важна скорость записи, а вот для маленьких файлов и документов хочется чего-нибудь попроще.
Если оба устройства подсоединены к одной сети идеальным вариантом будет передача файлов по сети linux. Здесь мы получаем большую скорость, и удобство использования — не нужно искать флешку или USB провод, достаточно прозрачно скопировать файл в нужную папку и он уже на целевом устройстве. Сегодня мы рассмотрим основные способы передачи файлов по сети между компьютерами.
Передача файлов по сети Linux
1. Утилита nc
Этот способ отлично подойдет, если вам нужно передать один или несколько файлов и вы не хотите устанавливать никаких новых программ в систему. Утилита nc или netcat позволяет создавать tcp и unix сокеты в системе. По сути, это туннели, через которые мы можем передать любые данные, в том числе и файлы.
Утилита уже предустановлена, так что ничего дополнительно ставить не придется, нужно только знать IP адреса компьютеров в сети. Сначала создаем слушающий сокет на компьютере, все поступившие на него данные сразу пишем в файл:
Здесь опция -p задает порт, можно брать привольное значение, только чтобы совпадало в обоих командах. Теперь отправляем файл из другого компьютера:
cat file | nc 192.168.0.101 12345
Тут мы указываем тот же порт и ip компьютера, где был запущен слушающий сокет — 192.168.0.101. Убедитесь, что Firewall не мешает подключению к выбранному порту иначе ничего не получится.
Мы можем передавать не только файлы, но и папки. Передача может быть выполнена в обоих направлениях, теперь отправим не на сокет, и от сокета:
tar -cf — /data | nc -l -p 12345
И принимаем отравленные данные на другом компьютере:
nc 192.168.1.2 12345 | tar -xf —
2. Передача файлов ssh
Передача файлов по ssh Linux — это самый быстрый и удобный способ обмена файлами. Достаточно, чтобы на компьютере была запущена служба SSH и у вас был к ней доступ. Затем с помощью утилиты scp туда можно передать любой, файл, это быстро и удобно, а ещё вы можете выбрать папку, в которую его надо сохранить. Допустим, вам надо передать файл с именем ~/file.txt на компьютер с IP адресом 192.168.0.101, тогда используйте такую команду:
scp ~/file.txt root@192.168.0.101:/root
Утилита загрузит файл прямо в домашнюю папку на удалённом компьютере и вы сможете выполнять с ним действия по SSH. Если надо передать все файлы из папки можно использовать опцию -r:
scp -r ~/files root@192.168.0.101:/root
Читайте более подробно про утилиту scp в отдельной статье.
3. Передача файлов по FTP
Не очень удобный и очень медленный способ передачи файлов по сети. Хорошо работает для больших файлов, но большое количество мелких файлов будут передаваться очень долго. На одном компьютере должен быть развернут FTP сервер, а на другом можно использовать графический FTP клиент FileZilla для подключения и передачи файлов.
4. Как передать файл в rsync
Утилита rsync тоже использует для передачи файлов SSH, однако она позволяет передавать целые папки, а также следить за состоянием файлов и если на удалённом компьютере такой файл уже есть, то он передаваться не будет. Таким образом можно копировать только измененные файлы и удобно передавать целые папки. Для примера возьмем тот же компьютер 192.168.0.101 и папку ~/files:
rsync -avz ~/files root@192.168.0.101:/home/
Мы записываем все файлы из папки ~/files в папку /home/root, а также получаем возможность синхронизировать их. Подробнее про rsync читайте в отдельной статье.
5. Сервер NFS
Ещё один способ передачи файлов между Linux серверами — это NFS. На одном из серверов разворачивается NFS сервер, а на другом, монтируется удаленная NFS папка в обычную файловую систему, после чего она становится частью файловой системы Linux и туда уже можно копировать файлы так, как будто это на той же машине. Просто и удобно, но надо настраивать NFS и ещё один минус по сравнению с FTP, у NFS нет возможности настроить простую авторизацию по паролю, можно ограничить монтирование только по IP адресу что не всегда удобно.
6. Сервер Samba
Передавать файлы в Windows на Linux и обратно может помочь удалённый доступ с помощью Samba сервера. Если развернуть сервер Samba на Linux машине, то к нему можно будет подключится из Windows и видеть все файлы в общей папке. Samba — не очень хорошее решение, так как могут возникнуть проблемы с файлами больше 1 Гб, передающимися очень долго, но для обмена файлами между Windows и Linux довольно неплохое решение, тем более, что обмен файлами выполняется через стандартный файловый менеджер.
7. KDE-Connect
Для обмена файлами между компьютером Linux и Android можно использовать программу KDE-Connect. У неё есть приложение для Android, она встроена в окружение KDE, а для Gnome есть расширение GSConnect. Утилита позволяет передавать файлы на компьютер прямо с телефона, а также монтировать общую папку, в которую можно скидывать как файлы на компьютере, так и файлы на телефоне. Очень удобно. Читайте подробнее в статье про настройку KDE-Connect.
Выводы
Вы можете спросить, а какой же способ мне использовать? Ответ зависит от ваших потребностей, если вам нужен только передать один файл раз в месяц, может решением станет scp или FTP, а для регулярной передачи файлов по сети Linux удобнее использовать rsync, к тому же с помощью этой утилиты можно запланировать автоматическую синхронизацию. А какими способами пользуетесь вы? Напишите в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Как использовать команду Linux FTP для передачи файлов
FTP (протокол передачи файлов) — это стандартный сетевой протокол, используемый для передачи файлов в удаленную сеть и из нее.
В этом руководстве мы покажем вам, как использовать команду ftp Linux на практических примерах.
В большинстве случаев вы будете использовать настольный FTP-клиент для подключения к удаленному серверу и загрузки или выгрузки файлов. Однако команда ftp полезна, когда вы работаете на сервере без графического интерфейса пользователя и хотите передавать файлы по FTP на удаленный сервер или с него.
Подготовка
Трафик FTP не зашифрован. Для безопасной передачи данных используйте SCP или SFTP .
Чтобы иметь возможность передавать файлы, у вас должны быть как минимум права на чтение исходного файла и права записи в целевой системе.
При передаче больших файлов рекомендуется запускать команду ftp внутри сеанса screen или tmux .
Каталог, из которого вы запускаете команду ftp является локальным рабочим каталогом.
Установление FTP-соединения
- Чтобы открыть ftp-соединение с удаленной системой, вызовите команду ftp за которой следует IP-адрес или доменное имя удаленного сервера. Например, чтобы подключиться к FTP-серверу с адресом «192.168.42.77», введите:
220---------- Welcome to Pure-FTPd [privsep] [TLS] ---------- 220-You are user number 1 of 50 allowed. 220-Local time is now 21:35. Server port: 21. 220-This is a private system - No anonymous login 220-IPv6 connections are also welcome on this server. 220 You will be disconnected after 15 minutes of inactivity. Name (192.168.42.77:localuser): linuxize
You may see a different confirmation message depending on the FTP service running on the remote server.
230 OK. Current restricted directory is / Remote system type is UNIX. Using binary mode to transfer files. ftp>
Если FTP-сервер, к которому вы обращаетесь, принимает анонимные учетные записи FTP, и вы хотите войти в систему как анонимный пользователь, используйте anonymous качестве имени пользователя и свой адрес электронной почты в качестве пароля.
Общие команды FTP
Большинство команд FTP похожи или идентичны командам, которые вы вводите в командной строке Linux.
Ниже приведены некоторые из наиболее распространенных команд FTP.
- help или ? — список всех доступных команд FTP.
- cd — сменить каталог на удаленной машине.
- lcd — сменить каталог на локальной машине.
- ls — перечислить имена файлов и каталогов в текущем удаленном каталоге.
- mkdir — создать новый каталог в текущем удаленном каталоге.
- pwd — распечатать текущий рабочий каталог на удаленной машине.
- delete — удалить файл в текущем удаленном каталоге.
- rmdir — удалить каталог в текущем удаленном каталоге.
- get — скопировать один файл с удаленного на локальную машину.
- mget — скопировать несколько файлов с удаленного на локальную машину.
- put — скопировать один файл с локальной машины на удаленную.
- mput — скопировать один файл с локальной машины на удаленную.
Загрузка файлов с помощью команды ftp
После входа в систему ваш текущий рабочий каталог становится домашним каталогом удаленного пользователя.
При загрузке файлов с помощью команды ftp файлы будут загружены в каталог, из которого вы ввели команду ftp .
Если вы хотите загрузить файлы в другой локальный каталог, переключитесь в него с помощью команды lcd .
Допустим, мы хотим загрузить файлы в каталог ~/ftp_downloads :
Чтобы загрузить один файл с удаленного сервера, используйте команду get . Например, чтобы загрузить файл с именем backup.zip вы должны использовать следующую команду:
Результат должен выглядеть примерно так:
200 PORT command successful 150-Connecting to port 60609 150 6516.9 kbytes to download 226-File successfully transferred 226 2.356 seconds (measured here), 2.70 Mbytes per second 6673256 bytes received in 2.55 seconds (2.49 Mbytes/s)
Чтобы загрузить сразу несколько файлов, используйте команду mget . Вы можете предоставить список отдельных имен файлов или использовать подстановочные знаки:
mget backup1.zip backup2.zip
При загрузке нескольких файлов вам будет предложено подтверждение для каждого файла.
mget backup1.zip? y 200 PORT command successful 150 Connecting to port 52231 226-File successfully transferred 226 0.000 seconds (measured here), 31.51 Kbytes per second 14 bytes received in 0.00058 seconds (23.6 kbytes/s) mget backup2.zip? y 200 PORT command successful 150-Connecting to port 59179 150 7.2 kbytes to download 226-File successfully transferred 226 0.000 seconds (measured here), 16.68 Mbytes per second 7415 bytes received in 0.011 seconds (661 kbytes/s)
Когда вы закончите загрузку файлов с удаленного FTP-сервера, закройте соединение, используя команду bye или quit :
221-Goodbye. You uploaded 0 and downloaded 6544 kbytes. 221 Logout.
Загрузка файлов с помощью команды FTP
Чтобы загрузить файл из локального каталога на удаленный FTP-сервер, используйте команду put :
Результат должен выглядеть примерно так:
200 PORT command successful 150 Connecting to port 34583 226-File successfully transferred 226 0.849 seconds (measured here), 111.48 Kbytes per second 96936 bytes sent in 0.421 seconds (225 kbytes/s)
Если вы хотите загрузить файл, которого нет в вашем текущем рабочем каталоге, используйте абсолютный путь к файлу.
Чтобы загрузить несколько файлов из локального каталога на удаленный FTP-сервер, вызовите команду mput :
mput image1.jpg? y 200 PORT command successful 150 Connecting to port 41075 226-File successfully transferred 226 1.439 seconds (measured here), 102.89 Kbytes per second 151586 bytes sent in 1.07 seconds (138 kbytes/s) mput image2.jpg? y 200 PORT command successful 150 Connecting to port 40759 226-File successfully transferred 226 1.727 seconds (measured here), 111.75 Kbytes per second 197565 bytes sent in 1.39 seconds (138 kbytes/s)
При загрузке нескольких файлов команда предложит вам подтвердить каждый файл, который вы хотите загрузить.
После того, как вы закончите загрузку файлов на удаленный FTP-сервер, закройте соединение, bye или quit .
Выводы
В этом руководстве вы узнали, как использовать команду ftp для загрузки и выгрузки файлов на удаленный FTP-сервер.
Не стесняйтесь оставлять комментарии, если у вас есть вопросы.