Rclone: rsync для облаков

В предыдущих публикациях мы уже не раз рассказывали о полезных утилитах для работы с нашим облачным хранилищем. Сегодня мы поговорим ещё об одном интересном, простом в обращении и — не побоимся этого слова — уникальном инструменте. Знакомьтесь: rclone. Разработчики описывают его краткой и ёмкой фразой «rsync для облачных хранилищ».

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

Есть у rclone и опции, которых нет ни у одного другого инструмента аналогичного плана. Подробнее обо всём этом мы расскажем ниже.

Установка и первичная настройка

Несомненным плюсом и несомненным преимуществом rclone перед другими продуктами аналогичного плана является поддержка множества операционных систем: Linux, Windows (что особенно радует: кроме Cyberduck, никаких клиентов до недавнего времени вообще не было) MacOS, Solaris, FreeBSD, OpenBSD, NetBSD и Plan 9.
Ссылки для скачивания пакетов для всех названных ОС можно найти на странице загрузки.

Мы будем описывать особенности работы c rclone на материале ОС Linux. Для установки нам потребуется скачать необходимый пакет, а далее выполнить:

$ unzip rclone-current-linux-amd64.zip
$ cd rclone-current-linux-arm
$ sudo cp rclone /usr/sbin/
$ sudo chown root:root /usr/sbin/rclone
$ sudo chmod 755 /usr/sbin/rclone
$ sudo mkdir -p /usr/local/share/man/man1
$ sudo cp rclone.1 /usr/local/share/man/man1/
$ sudo mandb

По завершении установки настроим rclone для работы с облачным хранилищем Selectel:

$ rclone config

На консоли появится такой диалог:

No remotes found - make a new one
n) New remote
q) Quit config
n/q> 

Выбираем n и нажимаем Enter. Далее нам нужно будет указать имя подключения к удалённому хранилищу:

name >

Указываем любое имя (например, Selectel) и переходим к следующему пункту:

1 / Amazon Cloud Drive
   \ "amazon cloud drive"
 2 / Amazon S3 (also Dreamhost, Ceph)
   \ "s3"
 3 / Backblaze B2
   \ "b2"
 4 / Dropbox
   \ "dropbox"
 5 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
 6 / Google Drive
   \ "drive"
 7 / Hubic
   \ "hubic"
 8 / Local Disk
   \ "local"
 9 / Microsoft OneDrive
   \ "onedrive"
10 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
11 / Yandex Disk
   \ "yandex"

Выбираем цифру 10 (swift) и нажимаем Enter. После этого программа запросит имя пользователя и пароль:

Authentication URL for server.
Choose a number from below, or type in your own value
 1 / Rackspace US
   \ "https://auth.api.rackspacecloud.com/v1.0"
 2 / Rackspace UK
   \ "https://lon.auth.api.rackspacecloud.com/v1.0"
 3 / Rackspace v2
   \ "https://identity.api.rackspacecloud.com/v2.0"
 4 / Memset Memstore UK
   \ "https://auth.storage.memset.com/v1.0"
 5 / Memset Memstore UK v2
   \ "https://auth.storage.memset.com/v2.0"
 6 / OVH
   \ "https://auth.cloud.ovh.net/v2.0"

Нашего хранилища в списке нет, поэтому укажем адрес вручную:

auth > https://auth.selcdn.ru/v1.0

Два следующих пункта (tenant и region) являются факультативными, и их можно пропустить. В последнем вопросе диалога нам будет предложено ещё раз проверить все настройки:

Remote config
--------------------
[selectel]
user = your_username key = your_password (указываем пароль из панели управления, раздел "Пользователи") auth = https://auth.selcdn.ru/v1.0 tenant =  region =  -------------------- y) Yes this is OK e) Edit this remote d) Delete this remote y/e/d> 

Если всё правильно, выбираем вариант y и нажимаем Enter.

Примеры команд

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

# Просмотр списка контейнеров в хранилище
$ rclone lsd selectel:

# Создание нового контейнера
$ rclone mkdir selectel:[имя контейнера]

# Просмотр списка файлов в контейнере
$ rclone ls selectel:[имя контейнера]

# Копирование файлов с локальной машины в хранилище
rclone copy /home/local/directory

# Синхронизация файлов на локальной машине и в хранилище
$ rclone sync /home/local/directory selectel:[имя контейнера]
# Синхронизация файлов в хранилище с файлами на локальной машине
$ rclone selectel:[имя контейнера] sync /home/local/directory

При выполнении операций копирования и синхронизации rclone проверяет все файлы по дате и времени изменения или md5-сумме. Из директории-источника в директорию назначения передаются те файлы, которые были изменены.
Подробное описывать все команды мы в этой статье не будем: обо всё можно прочитать в официальной документации. Также краткую справку можно получить с помощью команды:

$ rclone --help

Большинство функций rclone — такие же, как у других инструментов для работы с облачными хранилищами. Но есть у него одна уникальная функция, которой нет ни у одного из известных нам инструментов: перенос данных из одного облачного хранилища в другое.

Рассмотрим следующий практический пример: у нас есть папка с фотографиями на Google Docs, и её содержимое нужно перенести в наше облачное хранилище. С помощью rclone это делается очень просто. Создаём новое подключение; в списке доступных облачных хранилище выбираем Google Drive. После этого нам будет предложено указать два параметра: client_id и client_secret. В ответ на соответствующие вопросы не ничего не вводим и просто нажимаем Enter.

Далее нам будет задан следующий вопрос:

Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n>

Выбираем ответ «нет» (n). Rclone сгенерирует ссылку для получения кода:

If your browser doesn't open automatically go to the following link: https://accounts.google.com/o/oauth2/auth?client_id=202264815644.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=ac901aefe97aff8ce65fe593060d0b0c
Log in and authorize rclone for access

Откроем эту ссылку в браузере и дадим rclone разрешение на доступ к файлам.

После этого API Google Drive вернёт код, который нужно будет вставить в ответ на вопрос:

Enter verification code >

Вот и всё. Подключение к Google Drive настроено, и можно приступать к копированию:

$ rclone copy [имя подключения]:[имя директории] [selectel]:[имя контейнера]

С задачей копирования файлов rclone справляется достаточно быстро: мы скопировали папку с фотографиями объёмом 1,8 ГБ за 1 минуту 55 секунд.

В ходе экспериментов мы также выяснили, что rclone без проблем копирует и текстовые документы GoogleDocs, преобразуя их в формат docx.

Загрузка объектов большого размера

Проверим скорость работы rclone ещё на одном тесте: попытаемся загрузить в хранилище объект большого размера — более 20 ГБ. Файлы до 20 ГБ загружаются в хранилище при помощи стандартных команд. Процедура загрузки файлов большего размера проходит по-другому: файл делится на сегменты, которые загружаются в отдельный контейнер.

Rclone по умолчанию делит такие файлы на сегменты размером по 5ГБ каждый. В случае необходимости размер сегмента можно изменить с помощью опции -swift-chunk-size. Мы попробовали загрузить в хранилище файл размером 25 ГБ. Rclone справился с этой задачей за 11 минут 14 секунд. Результат, как видим, вполне неплохой.

Заключение

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

А если вы уже знакомы с rclone — делитесь опытом в комментариях.

Что еще почитать по теме

T-Rex 30 марта 2021

Что такое SMTP-протокол и как он устроен?

SMTP (Simple Mail Transfer Protocol) — протокол передачи почты. Он был представлен еще в 1982 году, но не теряет актуальности до сих пор. В статье разбираемся, какие задачи решает протокол и как он ра…
T-Rex 30 марта 2021
Владимир Туров 1 сентября 2020

Дело совершенно секретного iPod

Это был обычный серый день в конце 2005 года. Я сидел на рабочем месте и писал код для следующей версии iPod. Вдруг без стука ворвался директор ПО для iPod, начальник моего начальника, и закрыл дверь.
Владимир Туров 1 сентября 2020
T-Rex 21 августа 2020

TrendForce: цены на SSD упадут

Эксперты DRAMeXchange предсказывают значительное падение цен на оперативную память и твердотельные накопители в ближайшее время. Причина — сокращение спроса на чипы для NAND и DRAM.
T-Rex 21 августа 2020

Новое в блоге

Михаил Фомин 24 июня 2022

Docker Swarm VS Kubernetes — как бизнес выбирает оркестраторы

Рассказываем, для каких задач бизнесу больше подойдет Docker Swarm, а когда следует выбрать Kubernetes.
Михаил Фомин 24 июня 2022
Ульяна Малышева 30 сентября 2022

«Нулевой» локальный диск. Как мы запустили облако только с сетевыми дисками и приручили Ceph

Чем хороши сетевые диски и почему именно Ceph, рассказал директор по развитию ядра облачной платформы Иван Романько.
Ульяна Малышева 30 сентября 2022
Валентин Тимофеев 30 сентября 2022

Как проходит онбординг сотрудников ИТО? Что нужно, чтобы выйти на смену в дата-центр

Рассказываем, как обучаем новых сотрудников, какие задачи и испытания проходят инженеры прежде, чем выйти на свою первую смену.
Валентин Тимофеев 30 сентября 2022
T-Rex 28 сентября 2022

Книги по SQL: что почитать новичкам и специалистам

Собрали 6 книг, которые помогут на старте изучения SQL и при углублении в тему.
T-Rex 28 сентября 2022