Файловый менеджер Cyberduck

Утилита Cyberduck — удобный файловый менеджер для MacOS, Linux и Windows, работающий с протоколами FTP, SFTP, WebDAV, OpenStack Swift и AmazonS3. Программа может использоваться в качестве FTP и SFTP-клиента, а также для работы с различными сервисами облачного хранения данных.

Установка графического клиента

Windows

Специально для пользователей клиента Cyberduck мы в Selectel создали профиль для работы с нашим хранилищем. Этот профиль использует протокол Swift вместо FTP, что улучшает качество работы.

Для того чтобы загрузить профиль выполните следующие действия:

  1. Скачайте файл профиля.

  2. Установите клиент, скопировав файл профиля Selectel в папку profiles (по умолчанию она расположена в C:\Program Files (x86)\Cyberduck\profiles).

  3. Запустите Cyberduck и нажмите кнопку Новое подключение.

    image

  4. Выберите профиль Selectel Cloud Storage.

    image

  5. Заполните поле Selectel ID:Username через двоеточие, где:

    1. Selectel ID (1) - это номер учетной записи  панели управления Selectel;
    2. Username (2) - это имя пользователя облачного хранилища.

    Примечание: Имя пользователя и пароль устанавливаются владельцем учетной записи, их можно узнать в личном кабинете в разделе Облачное хранилищеПользователи.

    image

  6. Введите пароль в поле Пароль.

  7. Нажмите кнопку Подключиться.

Соединение с хранилищем будет установлено и в открывшемся окне отобразится список доступных контейнеров.

Mac OS

Графическая версия Cyberduck для MacOS устанавливается стандартным способом через Appstore.
  1. Скачайте профиль файл профиля для Selectel и установите в приложение Cyberduck.

    image

  2. Заполните поле Selectel ID:Username через двоеточие,  где:

    1. Selectel ID - это номер учетной записи панели управления Selectel;

    2. Username - это имя пользователя облачного хранилища.

  3. Введите пароль в поле Password.

  4. Нажмите кнопку Подключить.

image
В результате выполненных действий откроется окно со списком доступных пользователю контейнеров. 

Linux

Графическая версия Cyberduck для Linux-систем отсутствует. 

Установка консольного клиента

Windows

Консольная версия Cyberduck для Windows устанавливается с помощью менеджера пакетов Chocolatey.

Введите команду:

choco install duck

Загрузите последнюю версию установщика MSI по ссылке (https://dist.duck.sh/ ). Подробнее: https://trac.cyberduck.io/wiki/help/en/howto/cli#Windows.

image

Для установки профиля Selectel скопируйте файл профиляв папку profiles (по умолчанию она расположена в C:\Program Files (x86)\Cyberduck CLI\profiles).

Mac OS

Консольная версия Cyberduck для MacOS устанавливается с помощью менеджера пакетов Homebrew: 

brew install duck 

Linux

В этом разделе описана процедуру установки для Ubuntu 16.04, пользователей других дистрибутивов отсылаем к официальной документации.

Для того чтобы установить консольную версию Cyberduck, выполните следующие действия: 

1. Добавьте сначала соответствующий репозиторий:

echo 'deb https://s3.amazonaws.com/repo.deb.cyberduck.io nightly main' >/etc/apt/sources.list
echo 'deb https://s3.amazonaws.com/repo.deb.cyberduck.io stable main' >/etc/apt/sources.list 

2. Добавьте ключ:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys FE7097963FEFBE72

3. Выполните команды:

sudo apt-get update
sudo apt-get install duck

Основные операции с облачным хранилищем в консоли

Скачайте профиль Selectel файл профиля:

wget https://support.selectel.ru/storage/static/tools/selectel-storage.cyberduckprofile

Создайте директорию с профилями:

mkdir .duck/profiles

Переместите скачанный профиль Selectel в директорию с профилями:

mv 'selectel-storage.cyberduckprofile' .duck/profiles/
Все команды для работы с облачным хранилищем имеют следующий вид:
duck -<аргумент> selectel://<имя контейнера> --username <Selectel ID>:<Username> --password <пароль>
Все возможные аргументы для команды duck можно просмотреть, введя в командную строку:
duck --help

Получение списка файлов в контейнере

Чтобы получить список файлов, хранимых в некотором контейнере, используется опция -l (или −−list):

duck -l selectel://<имя контейнера> --username <Selectel ID>:<Username> --password <пароль>
Результат вывода:
1.pdf
2.jpg
3.png

Примечание: иногда в Linux-системах не отображаются файлы с именами, набранными кириллицей.

Скачивание файла

Для скачивания файла из хранилища используется команда вида:

duck -d selectel://<имя контейнера> --username <Selectel ID>:<Username> --password <пароль>

Открытие файла для редактирования на локальной машине

С помощью консольной версии CyberDuck можно открывать файлы для редактирования на локальной машине, по завершении редактирования в хранилище будет загружена обновленная (со всеми внесенными изменениями) версия файла. Для этого используется аргумент --edit:
duck --edit selectel://<имя контейнера> --username <Selectel ID>:<Username> --password <пароль>

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

Эта функция Cyberduck будет особенно интересной для пользователей, размещающих в нашем хранилище статические сайты. Для того чтобы, например, быстро отредактировать текст на сайте, достаточно выполнить указанную выше команду, внести изменения в нужные файлы и сохранить их.

Загрузка объекта в хранилище

Операция загрузки выполняется при помощи команды вида:
duck --upload selectel://<имя контейнера> --username <Selectel ID>:<Username> --password <пароль>

При загрузке объекта нужно указывать полный путь к месту хранения этого самого объекта. Например, если мы хотим сохранить файл myimage.png в контейнере images, то путь к нему нужно указать так: /images/ myimage.png.

Большие (размером более 2ГБ) объекты Cyberduck загружает в хранилище по частям.

Версии объектов и резервное копирование

Консольная версия Cyberduck представляет собой удобный инструмент для резервного копирования и архивирования данных. Рассмотрим эти функции более подробно на конкретных практических примерах.

Представим себе, что у нас на локальной машине имеется директория, содержимое которой нужно периодически копировать в облачное хранилище. Для этого написан специальный скрипт и добавлено задание Cron, которое отправляет резервную копию в хранилище каждый день в указанное время.

Скрипт выглядит так:

#!/bin/bash
SWIFT_USERNAME=имя пользователя
SWIFT PASSWORD=пароль для входа в хранилище
SWIFT_AUTH_URL=auth.selcdn.ru
BACKUP_PATH=путь к месту хранения бэкапа
LOCAL_PATH=путь к папке на локальной машине

duck --upload selectel://$SWIFT_USERNAME@$SWIFT_AUTHURL/$BACKUP_PATH/ $LOCAL_PATH --existing rename --password $SWIFT_PASSWORD -q

Обратим внимание на синтаксис команды duck. В приведенном примере используются ключ --existing, который указывает, что делать с уже имеющимися в хранилище файлами. Опция rename переименовывает уже имеющуюся резервную копию, добавляя к её имени время и дату.

С помощью cyberduck можно осуществлять и дифференциальное резервное копирование. Для этого используются опция compare:

duck --upload  selectel://<полный путь к объекту в хранилище> <путь к файлу на локальной машине> --existing compare --username <Selectel ID>:<Username> --password <пароль>

При выполнении приведенной команды программа сравнит загружаемую резервную копию с уже имеющейся по размеру, дате изменения и контрольной сумме. Если параметры отличаются, то старая версия будет удалена, а новая — загружена в хранилище.

При использовании опции skip в хранилище будут загружены только новые файлы (те, которые появились в папке на локальной машине после предыдущей загрузки). Уже имеющиеся файлы не будут загружены, даже если на локальной машине они были изменены.

Аргумент overwrite просто удалит из хранилища имеющуюся резервную копию и загрузит новую.

Синхронизация локальных файлов с файлами в хранилище

Синхронизация файлов — это процесс, в результате которого две директории, одна из которых находится на локальной машине, а другая — в хранилище, будут содержать одинаковый набор файлов в одной и той же версии с наиболее свежей датой изменений. Если на локальной машине какие-либо файлы были изменены, добавлены или удалены, эти же самые файлы будут изменены, добавлены или удалены в хранилище, и наоборот.

Синхронизация выполняется при помощи команды:

duck --synchronize selectel://<имя контейнера> --username <Selectel ID>:<Username> --password <пароль> <путь к папке на локальной машине>
С помощью функции синхронизации можно поддерживать помещенные в хранилище резервные копии данных с локальной машины в актуальном состоянии.

Вот пример простого скрипта:

 
#bin/bash
SWIFT_USERNAME=имя пользователя
SWIFT PASSWORD=пароль для входа в хранилище
SWIFT_AUTH_URL=auth.selcdn.ru
BACKUP_PATH=путь к месту хранения бэкапа
LOCAL_PATH=путь к папке на локальной машине

duck --synchronize selectel://$SWIFT_USERNAME@SWIFT_AUTHURL/$BACKUP_PATH $LOCAL_PATH --password $SWIFT_PASSWORD -q

Достаточно добавить соответствующее задание в cron — и данные будут автоматически синхронизироваться с указанной периодичностью.

Описываемая функция будет полезной и для тех, кто размещает в хранилище статические сайты. Чтобы обновить сайт, достаточно внести соответствующие изменения в файлы на локальной машине, а затем выполнить команду синхронизации. 

Копирование файлов

Чтобы скопировать файл из одного контейнера в другой , используется команда вида:
duck --сopy swift:// <username@auth.selcdn.ru>/<полный путь к файлу> <username@auth.selcdn.ru>/<путь к новому месту хранения> -p <пароль>

Опция -v

Чтобы на консоль выводилась информация обо всех HTTP-запросах, осуществляемых при выполнении операций с хранилищем, а также об ответах на них, используется опция -v (или --verbose). Это помогает понять, как с хранилищем взаимодействуют сторонние приложения.