Удалённые хранилища позволяют экономить дисковое пространство сервера. Храниться там может что угодно: какие-то редко используемые файлы, документы, изображения, видео. Но чаще всего — бэкапы.
В большинстве случаев такие хранилища предлагают графический интерфейс, чтобы можно было быстро посмотреть список копий и скачать нужную в несколько кликов. Тем не менее, всё то же самое можно сделать, не выходя из консоли вашего сервера — достаточно знать доступы к хранилищу для подключения по FTP.
Существуют разные инструменты для управления файлами на удалённом сервере. Рассмотрим самые базовые:
Для начала работы необходимо подключиться к серверу по SSH.
Работа с консольным клиентом ftp
ftp
— консольный клиент для работы с файлами по
протоколу FTP. Доступен для установки в каждом дистрибутиве операционных
систем семейства Linux:
Ubuntu и Debian | CentOS |
-- установлен по умолчанию -- apt-get update apt-get install ftp |
yum install ftp |
Предположим, что у нас есть несколько резервных копий в каталоге /root/backup/
Перед началом работы с хранилищем нужно перейти в него с помощью команды:
cd /root/backup/
Таким образом после подключения к хранилищу мы сможем работать с файлами этого каталога без лишних действий.
Подключение и отключение
Для работы с внешним FTP-диском нам потребуются:
- адрес хранилища
- логин FTP-пользователя
- пароль FTP-пользователя
Если вы используете Диск для бэкапов, эти данные доступа можно найти в Личном кабинете — раздел Товары
— Внешний диск для бэкапов
. Выберите ваш диск в списке и сверху нажмите «Инструкция»
. В разделе «Доступ по протоколу FTP»
будут указаны нужные данные:
Для подключения в терминале введите команду:
ftp [адрес хранилища]
Система запросит у вас имя и пароль FTP-пользователя:
Чтобы завершить работу с хранилищем, введите команду bye
или quit
Автоматическая авторизация
Настроив автоматическую авторизацию, можно сэкономить немного времени
на вводе данных. Для этого в корневой папке вашего пользователя нужно
создать файл .netrc
touch ~/.netrc chmod 600 ~/.netrc
В файле нужно прописать данные хранилища: адрес (вместо ftp.storage.address
), логин (вместо ftp_login
), и пароль (вместо ftp_password
). В один файл можно записать доступы сразу к нескольким таким хранилищам.
#Диск для бэкапов machine ftp1.storage.address login ftp1_login password ftp1_password #Архив сайта machine ftp2.storage.address login ftp2_login password ftp2_password #Секреты админа machine ftp3.storage.address login ftp3_login password ftp3_password
Клиент ftp
использует этот файл по умолчанию. Чтобы отменить принудительную авторизацию, при подключении используйте ключ -n
:
ftp -n [адрес хранилища]
Тогда система запросит логин и пароль для подключения в обычном режиме.
Возможности
После авторизации откроется интерфейс для работы с хранилищем. Синтаксис команд напоминает стандартные команды Linux:
Навигация
-
pwd
— отображает текущую директорию, в которой мы находимся на удалённом хранилище; -
ls
— отображает список файлов и папок, размещенных в текущей директории хранилища; -
mkdir folder_name
иrmdir folder_name
— используются соответственно для создания и удаления директорий хранилища; -
cd /path/to/directory/
— используется для перемещения по каталогам; -
lcd /path/to/directory/
— переключает текущую рабочую директорию на локальном сервере. Пригодится, когда нужно загрузить в хранилище несколько файлов из разных каталогов текущего сервера.
Управление файлами
-
put file
— используется для загрузки на хранилище одиночного файлаfile
. Для загрузки доступны файлы только из текущей рабочей директории локального сервера. -
mput file1 file2
— позволяет загрузить в хранилище несколько файлов за раз. При этом после ввода команда будет запрашивать подтверждение для передачи каждого файла — нужно ввестиyes
и нажать клавишу Enter. -
get file
— скачивает файлfile
с хранилища в текущую рабочую директорию на локальном сервере; -
mget file1 file2
— позволяет скачать из хранилища несколько файлов за один раз. Для скачивания каждого файла будет запрошено подтверждение. -
delete file
— безвозвратно удаляет одиночный файл из текущей директории хранилища.mdelete file1 file2
— позволяет удалить несколько файлов из хранилища за один раз.
Работа с cURL
cURL
— кроссплатформенная утилита, позволяющая
обрабатывать и передавать данные по URL. Поддерживает огромное
количество различных протоколов (FTP, HTTP, HTTPS, IMAP, POP3, SCP, SFTP, SMB, SMTP, Telnet и др.).
cURL
предустановлен в большинстве современных Linux-дистрибутивов.
Ubuntu и Debian | CentOS |
-- установлен по умолчанию -- apt-get update apt-get install curl |
-- установлен по умолчанию -- yum install curl |
Подключение
В отличие от клиента ftp
, cURL
не
обеспечивает отдельный интерфейс для работы. Вместо этого он
единовременно подключается к хранилищу, авторизуется, запрашивает данные
и отключается, выводя требуемую информацию.
Подключиться к хранилищу можно двумя способами:
-
Указав авторизационные данные прямо в команде. Это быстро и удобно, но небезопасно — использованный вами пароль можно подсмотреть в истории команд.
curl -u ftp_login:ftp_password ftp://ftp.storage.address
-
Указав авторизационные данные в файле
.netrc
Тогда для работы в команде будет достаточно указать только адрес хранилища:curl -n ftp://ftp.storage.address
В обоих примерах cURL
выведет в терминал список
содержимого корневой папки хранилища. Аналогично можно вывести
содержимое отдельных директорий хранилища, просто дописав путь после
адреса FTP-сервера:
curl -n ftp://ftp.storage.address/backup/
Возможности
Чтобы работать с файлами через cURL
, нужно знать их название и расположение.
Загрузка файлов
Загрузить файл filename
на удалённое хранилище в условную папку backup/
можно с помощью следующей команды:
curl -T filename -u ftp_login:ftp_password ftp://ftp.storage.address/backup/
Если каталога backup/
, в который нужно загрузить файл, ещё не существует, можно добавить к команде опцию --ftp-create-dirs
Тогда cURL
автоматически создаст в хранилище недостающие директории и загрузит туда файл.
Скачивание файлов
Скачать файл filename
из условной папки backup/
с хранилища также просто. Для сохранения файла с его текущим именем используйте опцию -O
:
curl -O -u ftp_login:ftp_password ftp://ftp.storage.address/filename
Если же нужно сохранить файл на локальном сервере с новым именем local-filename
, можно использовать опцию -o
, указав после неё новое название файла:
curl -o local-filename -u ftp_login:ftp_password ftp://ftp.storage.address/backup/filename
Если вы скачиваете или загружаете большой файл, и процесс загрузки по
какой-то причине вдруг прервался, можно возобновить его с места
остановки. Для этого в предыдущую команду, которую вы запустили для
скачивания/загрузки, добавьте опцию -С -
curl -С - -O -u ftp_login:ftp_password ftp://ftp.storage.address/backup/filename
Управление файлами
cURL
может передавать команды FTP-серверу хранилища, тем самым позволяя управлять папками и файлами:
-
Создать папку
backup/
на FTP-хранилище можно командой:curl -u ftp_login:ftp_password ftp://ftp.storage.address/ -Q '-MKD backup'
-
Удалить папку
backup/
можно командойcurl -u ftp_login:ftp_password ftp://ftp.storage.address/ -Q '-RMD backup'
-
Переименовать файл
filename
вnew-filename
можно так:curl -u ftp_login:ftp_password ftp://ftp.storage.address/backup/ -Q '-RNFR filename' -Q ‘-RNTO new-filename’
-
Удалить файл
filename
из папкиbackup/
хранилища можно следующим образом:curl -u ftp_login:ftp_password ftp://ftp.storage.address/backup/ -Q '-DELE filename'
Загрузка файлов с wget
wget
— базовая утилита загрузки файлов. Доступна по умолчанию в любом дистрибутиве семейства Linux.
Чтобы скачать файл filename
, размещённый в папке backup/
удалённого хранилища, достаточно ввести команду:
wget -m ftp://'ftp-login':'ftp-password'@ftp.server.address/backup/filename
Или, при наличии файла .netrc
:
wget -m ftp://ftp.server.address/backup/filename
По умолчанию файл будет сохранён в вашу текущую рабочую директорию. Можно изменить путь для сохранения, использовав опцию -P /path/to/directory/
wget -m -P ~/user-downloads ftp://ftp.server.address/backup/filename
Также wget
может возобновить прерванную загрузку файла — для этого нужно повторить команду на скачивание файла с ключом -с
wget -c ftp://ftp.server.address/backup/filename