Удалённые хранилища позволяют экономить дисковое пространство сервера. Храниться там может что угодно: какие-то редко используемые файлы, документы, изображения, видео. Но чаще всего — бэкапы.
В большинстве случаев такие хранилища предлагают графический интерфейс, чтобы можно было быстро посмотреть список копий и скачать нужную в несколько кликов. Тем не менее, всё то же самое можно сделать, не выходя из консоли вашего сервера — достаточно знать доступы к хранилищу для подключения по 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— отображает список файлов и папок, размещенных в текущей директории хранилища;
Пример работы команд pw и ls -
mkdir folder_nameиrmdir folder_name— используются соответственно для создания и удаления директорий хранилища; -
cd /path/to/directory/— используется для перемещения по каталогам;
Создание папки с помощью mkdir и переход в неё с помощью cd -
lcd /path/to/directory/— переключает текущую рабочую директорию на локальном сервере. Пригодится, когда нужно загрузить в хранилище несколько файлов из разных каталогов текущего сервера.
Переключение локальной рабочей директории с помощью lcd
Управление файлами
-
put file— используется для загрузки на хранилище одиночного файлаfile. Для загрузки доступны файлы только из текущей рабочей директории локального сервера.
Загрузка файла с помощью put -
mput file1 file2— позволяет загрузить в хранилище несколько файлов за раз. При этом после ввода команда будет запрашивать подтверждение для передачи каждого файла — нужно ввестиyesи нажать клавишу Enter.
Загрузка нескольких файлов за раз с помощью mput -
get file— скачивает файлfileс хранилища в текущую рабочую директорию на локальном сервере;
Скачивание файлов с помощью get -
mget file1 file2— позволяет скачать из хранилища несколько файлов за один раз. Для скачивания каждого файла будет запрошено подтверждение.
Скачивание нескольких файлов с помощью mget -
delete file— безвозвратно удаляет одиночный файл из текущей директории хранилища.mdelete file1 file2— позволяет удалить несколько файлов из хранилища за один раз.
Удаление файлов с delete и mdelete
Работа с 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