Консольная версия Cyberduck: работа с облачным хранилищем

PR-881-2-2

В предыдущих публикациях мы уже неоднократно рассказывали об утилитах, которые могут быть использованы для работы с нашим облачным хранилищем (1 и  2). В одной из статей мы уже упоминали утилиту Cyberduck — удобный файловый менеджер для MacOS , Linux и Windows, работающий с протоколами FTP, SFTP, WebDAV, OpenStack Swift и AmazonS3. С нашего официального сайта можно также скачать профиль, с помощью которого Cyberduck автоматически конфигурируется для работы с нашим облачным хранилищем.

Пользователи в большинстве своём знакомы с графической версией Cyberduck. Совсем недавно появилась и консольная версия. В этой статье мы расскажем о её возможностях и покажем, как её можно использовать для работы с хранилищем.

Общая информация

Консольная версия Cyberduck работает со всеми основными операционными системами — MacOS, Windows и Linux. Программа может использоваться в качестве FTP и SFTP-клиента, а также для работы с различными сервисами облачного хранения данных.
Документация к консольной версии Cyberduck опубликована на официальном сайте, но, к сожалению, о большинстве важных функций в ней рассказано не так подробно, как хотелось бы. Ниже мы расскажем о том, какие операции с нашим хранилищем можно выполнять с её помощью, а также дадим подробные разъяснения по синтаксису основных команд.

Установка

Mac OS

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

$ brew install duck

Linux

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

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

$ 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

Затем добавим ключ:

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

и выполним команды

$ 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, которое отправляет резервную копию к хранилище каждый день в указанное время.
Скрипт выглядит так:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

duck --synchronize swift://$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). Это помогает понять, как с хранилищем взаимодействуют сторонние приложения.

Заключение

Консольная версия Cyberduck представляет собой удобный инструмент для работы с облачным хранилищем, обладающий широкими возможностями. Появление такого инструмента должно порадовать пользователей ОС Windows. Дело в том, что для Windows но недавнего времени вообще не было консольных программ для работы с облачными хранилищами на базе OpenStack Swift, и для этих целей приходилось пользоваться FTP-клиентами, что не всегда удобно.
Надеемся, что вы оцените консольную версию Cyberduck по достоинству будете пользоваться ей в повседневной практике.

Актуальная инструкция по работе с Cyberduck лежит в нашей базе знаний.