- Передача файлов между серверами Linux с использованием SCP и FTP
- Что такое FTP?
- Синтаксис FTP
- Команды FTP
- Как передавать файлы через FTP
- Шаг 1 — установка FTP-соединения
- Шаг 2 — выбор режима передачи
- Шаг 3 — передача файла
- Шаг 4 — завершение сессии
- Как передать несколько файлов через FTP
- Что такое SCP?
- Синтаксис SCP
- Как передать файлы по SCP с локальной машины на удаленный хост
- Как передать файлы по SCP с удаленного хоста на локальную машину
- Итоги
- Передача файлов по FTP
- Как работает FTP?
- Передача файлов по FTP через терминал
- Передача файлов по FTP в графическом интерфейсе
- Выводы
Передача файлов между серверами Linux с использованием SCP и FTP
Передача файлов между машинами — очень распространенная задача, с которой вы как разработчик будете сталкиваться постоянно.
Для передачи файлов в Linux есть специальные утилиты. В этой статье мы рассмотрим FTP и SCP. Они широко используются в скриптах автоматизации.
Что такое FTP?
FTP — это сетевой протокол, применяемый для обмена файлами по сети. Он использует порт 21. FTP позволяет вам подключаться к удаленной системе для обмена файлами при помощи команды ftp .
Синтаксис FTP
FTP-синтаксис довольно прост:
Здесь host может быть как именем, так и IP-адресом удаленного хоста, к которому вы хотите подключиться.
Команды FTP
FTP-команды напоминают команды Linux. Вот некоторые из них:
Команда | Использование |
---|---|
open | Открывает удаленное соединение с другим компьютером. |
get | Копирует файл из удаленной системы в локальную. |
put | Копирует файл из локальной системы в директорию удаленной. |
mget | Передача нескольких файлов из удаленной системы в текущую директорию локальной. |
mput | Передача нескольких файлов из локальной системы в директорию удаленной. |
bye/quit | Подготовка к выходу из FTP-окружения. |
close | Закрывает FTP-соединение. |
ascii | Включает ASCII-режим передачи файлов. |
binary | Включает бинарный режим передачи файлов. |
Как передавать файлы через FTP
FTP предлагает два режима передачи файлов: ASCII и бинарный.
- ASCII расшифровывается как American Standard Code for Information Interchange («Американский стандартный код для обмена информацией»). Используется для передачи простых файлов, например, текстовых.
- Бинарный режим используется для передачи нетекстовых файлов, например, изображений.
По умолчанию FTP использует режим передачи ASCII.
Шаг 1 — установка FTP-соединения
В этом примере hostA — удаленный хост. После ввода команды вам будет предложено ввести имя пользователя и пароль.
$ ftp hostA Connected to hostA. 220 hostA FTP server ready. Name (hostA:user): user 331 Password required for user. Password: password 230 User user logged in. Remote system type is LINUX.
Когда соединение будет успешно установлено, вы заметите символы ftp> в начале строки. Это значит, что теперь вы можете вводить FTP-команды.
Шаг 2 — выбор режима передачи
Вы можете выбрать режим передачи файлов (бинарный или ASCII) в зависимости от их типа.
ftp> ascii 200 Type set to A.
Шаг 3 — передача файла
Здесь мы использовали команду get для передачи файла sample.txt с удаленного FTP-сервера на локальную машину.
ftp> get sample.txt 200 PORT command successful. 150 Opening ASCII mode data connection for sample.txt (22 bytes). 226 Transfer complete. local: sample.txt remote: sample.txt 22 bytes received in 0.012 seconds (1.54 Kbytes/s)
Шаг 4 — завершение сессии
ftp> bye 221-You have transferred 22 bytes in 1 files. 221-Total traffic for this session was 126 bytes in 2 transfers. 221-Thank you for using the FTP service on hostA. 221 Goodbye.
Как передать несколько файлов через FTP
Для передачи нескольких файлов одновременно используются две команды: mget и mput .
mget используется для скачивания файлов с сервера, а mput — для заливки на сервер.
ftp> mget sample_file.1 sample_file.2
Здесь мы скачиваем файлы с удаленного хоста на локальную машину.
ftp> mput sample_file.1 sample_file.2
А здесь — наоборот: заливаем с локальной машины на удаленный хост.
Все команды, описанные в этом разделе, можно поместить в исполняемый файл и запускать по расписанию.
От редакции Techrocks. К сожалению, автор не раскрыла тему защищенной передачи файлов по FTPS, SFTP и FTP через SSH.
Что такое SCP?
SCP расшифровывается как Secure Copy («защищенное копирование»). Для этого копирования используется протокол SSH и порт 22. Данные, передаваемые по SCP, шифруются, и злоумышленники не смогут получить к ним доступ. Это делает передачу файлов по SCP очень безопасной.
С помощью SCP можно передавать файлы как с локальной машины на удаленный хост, так и обратно.
Синтаксис SCP
Давайте рассмотрим SCP-синтаксис.
scp [FLAG] [user@]SOURCE_HOST:]/path/to/file1 [user@]DESTINATION_HOST:]/path/to/file2
[FLAG]. Здесь могут стоять различные опции — флаги. Вот некоторые из них:
Флаг | Описание |
---|---|
-r | Рекурсивное копирование директорий. |
-q | Используется, чтобы спрятать показатель прогресса копирования и всю другую информацию, кроме сообщений об ошибках. |
-C | Сжатие данных при передаче. |
-P | Указание SSH-порта на машине, куда пересылаются файлы. |
-p | Сохраняет начальное время модификации файла. |
[user@]SOURCE_HOST. Имя пользователя и машина, с которой отправляется файл.
[user@]DESTINATION_HOST:]. Имя пользователя и машина, куда отправляется файл.
Примечание. Для передачи файлов по SCP нужно знать логин и пароль соответствующего пользователя на удаленной машине, а также иметь права на запись файлов.
Как передать файлы по SCP с локальной машины на удаленный хост
Для передачи файлов на удаленный хост введите следующую команду:
scp source_file.txt remote_username@10.13.13.11:/path/to/remote/directory
Здесь source_file.txt — файл, который нужно скопировать. Remote_username — имя пользователя на удаленном хосте 10.13.13.11. После двоеточия указывается путь на удаленной машине, куда нужно поместить файл.
remote_username@10.13.13.11's password: source_file.txt 100% 0 0.0KB/s 00:00
Теперь файл source_file.txt находится на удаленной машине, в директории по адресу /path/to/remote/directory.
Для копирования директорий используется флаг -r , как показано ниже.
scp -r /local/directory remote_username@10.13.13.11:/path/to/remote/directory
Как передать файлы по SCP с удаленного хоста на локальную машину
Для копирования файлов с удаленного хоста используется следующий формат команды:
scp remote_username@10.13.13.11:/remote/source_file.txt /path/to/local/directory
По сути, здесь все так же, как в предыдущем примере, просто исходный адрес и адрес назначения меняются местами.
При передаче файлов будьте предельно внимательны! SCP перезаписывает уже существующие файлы.
Итоги
Из этого руководства вы узнали, как передавать файлы и директории в командной строке, с использованием FTP и SCP.
При использовании в скриптах автоматизации эти команды очень полезны для сохранения, архивирования и пакетной обработки файлов.
Передача файлов по FTP
FTP — это один из самых популярных способов передачи файлов на сервер серди веб-мастеров и пользователей. File Transfer Protocol — довольно давняя технология, которая применялась для передачи файлов между компьютерами еще на заре зарождения интернета. Но она до сих пор сохранила свою популярность из-за простоты и надежности.
В одной из предыдущих статей мы писали о том, как выполняется настройка FTP на Ubuntu 16.04, в этой статье рассмотрим как работает передача файлов по FTP, рассмотрим как передать файлы с помощью терминала или в графическом интерфейсе.
Как работает FTP?
Протокол FTP представляет из себя набор команд, которые мы можем передавать на сервер обычным текстом для аутентификации, просмотра содержимого каталогов, перемещения по каталогам, отправки и скачивания файлов. Все команды передаются в открытом виде, в том числе и пароль, поэтому использование FTP очень небезопасно, и лучше применять передачу файлов scp или защищенный протокол sFTP, который мы рассмотрим ниже.
Важно заметить, что для передачи файлов и обработки команд используются два разных соединения. Команды передаются на порт 21, а когда нужно передать файл, сервер FTP сообщает на какой порт нужно начать отправлять информацию. Не будем вдаваться в подробности, скажу только, что существует два режима передачи файлов. Это активный, когда сервер подключается к компьютеру и начинает считывать файл и пассивный, когда компьютер передает файл на сервер. Сейчас в большинстве случаев применяется пассивный режим, потому что большинство пользователей используют NAT, что не позволяет серверу самому подключаться к портам клиента.
А теперь перейдем ближе к практике и рассмотрим как выполняется передача файлов по FTP.
Передача файлов по FTP через терминал
Мы могли бы использовать telnet для передачи файлов по FTP через терминал, но это слишком сложно и не нужно. Существует консольный клиент FTP с более простым синтаксисом и достаточными возможностями. Сначала рассмотрим общий синтаксис и команды утилиты:
$ ftp опции адрес_сервера
Опций у утилиты всего несколько, но нам нужно их рассмотреть, потому что они могут быть вам очень полезны:
- -A — использовать активный режим во время передачи файлов;
- -p — использовать пассивный режим, используется по умолчанию;
- -i — отключать интерактивный режим во время передачи файлов;
- -n — попытаться использовать автоматический вход;
- -e — отключить историю команд;
- -v — максимально подробный вывод;
- -d — включить режим отладки.
Дальше рассмотрим команды интерактивного режима, которые вы будете использовать для подключения к серверу и управления файлами:
- account — отправить серверу свой пароль для авторизации;
- append — добавить локальный файл в конец удаленного файла на сервере;
- ascii — передавать файлы в кодировке ASCII;
- binary — передавать файлы в бинарном формате;
- bye — завершить сессию;
- cd — перейти в папку;
- cdup — перейти в папку уровнем выше;
- chmod — изменить права на файл;
- delete — удалить файл с сервера;
- dir — посмотреть список файлов в папке;
- get — скачать файл из сервера на локальную машину;
- hash — отображать статус передачи файла;
- lcd — сменить рабочую директорию на локальной машине;
- ls — список файлов в папке;
- mdelete — удалить несколько файлов;
- mget — скачать несколько файлов;
- mkdir — создать папку;
- mput — передать несколько файлов на сервер;
- open — подключится к удаленному FTP серверу;
- put — передать файл на сервер;
- pwd — вывести текущую папку;
- recv — то же самое что и get;
- rename — переименовать файл на сервере;
- rmdir — удалить папку;
- size — узнать размер файла;
- user — авторизоваться на сервере.
Это далеко не все команды, которые вы можете использовать для передачи файлов, но здесь перечислено все самое основное, и вам их точно хватит для решения простых задач.
Сначала подключаемся к нашему серверу, команде нужно передать адрес сервера:
Затем авторизуемся на сервере, нужно передать логин и пароль:
Только после этого перед нами открывается командная оболочка FTP клиента. Именно здесь будет выполняться передача файлов ftp. Изменим текущую папку на FTP, затем посмотрим ее содержимое и выведем полный адрес текущей папки:
ftp> cd FTP
ftp> ls
ftp> pwd
Перейдем в папку documents на удаленном сервере и посмотрим ее содержимое:
Чтобы скачать файл по FTP с удаленного сервера нам нужно использовать команду get. Просто передайте команде имя файла:
Теперь файл находится на нашей локальной машине. Мы можем выполнять команды на локальной машине если перед ними добавить символ «!». Например, посмотрим содержимое домашней папки чтобы убедиться, что файл был загружен:
Загрузка файлов по FTP на сервер выполняется с помощью команды put, причем, здесь, как и в предыдущей команде можно задать имя создаваемого файла:
ftp> put document2.odt document3.odt
Также можно управлять файлами на удаленном сервере. Переименуем файл doument1.pdf, так чтобы он назывался правильно:
ftp> rename doument1.pdf document1.pdf
Для завершения сеанса FTP наберите Bye:
Сейчас многие FTP серверы используют шифрование на основе ssl сертификатов. Это необходимая мера, которая позволяет обезопасить данные пользователей. Для подключения к таким серверам необходимо использовать утилиту sftp, в остальном же процесс и команды не отличаются.
Передача файлов по FTP в графическом интерфейсе
Передача файлов на FTP через графический интерфейс может выполняться с помощью различных графических клиентов. Один из самых популярных из них — это Filezilla. Его можно использовать в Linux, Windows или MacOS. Например, для установки в Ubuntu используйте такую команду:
sudo apt install filezilla
Вот так выглядит главное окно утилиты. Для подключения к серверу необходимо ввести данные аутентификации в поля, которые находятся в верхней части окна:
Затем нажмите кнопку «Быстрое соединение». Если программа удачно подключится к серверу, то вы увидите список файлов на правой панели. На левой панели находится ваша локальная файловая система:
Чтобы передать файл достаточно его перетащить в нужную часть окна:
В контекстном меню вы можете выполнять различные действия с файлами, удалять, перемещать, копировать, переименовывать и даже редактировать. К тому же программа поддерживает подключение к серверам FTP, которые используют шифрование.
Выводы
В этой статье мы рассмотрели передача файлов ftp, а также как пользоваться ftp в целом для передачи, загрузки и управления файлами. Это очень полезная служба, которая позволяет просто и без особых знаний передавать файлы между компьютерами. Если у вас остались вопросы, спрашивайте в комментариях!
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.