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

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

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

Windows

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

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

  1. Откройте панель управления под своей учетной записью.

  2. Скачайте файл профиля и установите клиент.

  3. В открывшемся окне укажите имя закладки (не обязательно) и имя пользователя.

image

Далее будет запрошен пароль.

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

Mac OS

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

Linux

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

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

Windows

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

image

Для установки введите команду:

choco install duck

 

 

Для обновления файлового менеджера введите:

choco upgrade duck

Также можно установить Cyberduck с помощью последней версии установщика MSI по ссылке.

 Подробнее: https://trac.cyberduck.io/wiki/help/en/howto/cli#Windows.

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

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

Все команды для работы с облачным хранилищем имеют следующий вид:

duck -<аргумент> swift://<имя пользователя>@auth.selcdn.ru/<путь к объекту> -p <пароль>

После ввода команды программа запросит имя владельца учетной записи (Tenant). В ответ нужно указать пользователя, под учетной записью которого осуществляется доступ к хранилищу. Диалоговый режим можно вообще отключить — для этого используется опция -q.

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

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

duck -l swift://username@auth.selcdn.ru/<путь к контейнеру> -p <пароль>

Listing directory images…
1.jpg
2.jpg
3.png

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

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

duck -d swift://username@auth.selcdn.ru/ <путь к файлу> <имя файла> -p <пароль>

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

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

Для этого используется опция −−edit:

duck --edit swift://<имя пользователя>@auth.selcdn.ru/<путь к файлу>  -p <пароль>

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

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

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

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

duck --upload swift://username@auth.selcdn.ru <полный путь к объекту в хранилище> <путь к объекту на локальной машине> -p <пароль>

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

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

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

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

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

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

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

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

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

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

duck --upload swift://username@auth.selcdn.ru <полный путь к объекту в хранилище> <путь к файлу на локальной машине> --existing compare -p <пароль>

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

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

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

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

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

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

duck --synchronize swift://<username@auth.selcdn.ru>/<путь к папке в хранилище> <путь к папке на локальной машине>

С помощью функции синхронизации можно поддерживать помещенные в хранилище резервные копии данных с локальной машины в актуальном состоянии:

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

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

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

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

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

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

Чтобы скопировать файл из одного контейнера в другой , используется команда вида:

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

Опция -v

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