Передача файлов между серверами Linux с использованием SCP и FTP

Image by meineresterampe from Pixabay

Передача файлов между машинами — очень распространенная задача, с которой вы как разработчик будете сталкиваться постоянно.

Для передачи файлов в Linux есть специальные утилиты. В этой статье мы рассмотрим FTP и SCP. Они широко используются в скриптах автоматизации.

Что такое FTP?

FTP — это сетевой протокол, применяемый для обмена файлами по сети. Он использует порт 21. FTP позволяет вам подключаться к удаленной системе для обмена файлами при помощи команды ftp.

Синтаксис FTP

FTP-синтаксис довольно прост:

ftp host

Здесь 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.

При использовании в скриптах автоматизации эти команды очень полезны для сохранения, архивирования и пакетной обработки файлов.

Перевод статьи «How to Transfer Files Between Servers in Linux using SCP and FTP».

[customscript]techrocks_custom_after_post_html[/customscript]

[customscript]techrocks_custom_script[/customscript]

1 комментарий к “Передача файлов между серверами Linux с использованием SCP и FTP”

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх