Rclone: rsync для облаков
![Тирекс](https://selectel.ru/blog/wp-content/uploads/2023/05/T-Rex_Autor-3-400x400.png)
В предыдущих публикациях мы уже не раз рассказывали о полезных утилитах для работы с нашим облачным хранилищем. Сегодня мы поговорим ещё об одном интересном, простом в обращении и — не побоимся этого слова — уникальном инструменте. Знакомьтесь: rclone. Разработчики описывают его краткой и ёмкой фразой «rsync для облачных хранилищ». Основная функция rclone — это синхронизация данных в хранилище и на локальной машине. Утилита несомненно окажется полезной для широкого круга пользователей облачного […]
![Изображение записи](https://selectel.ru/blog/wp-content/uploads/2016/07/PR-2358_preview.png)
В предыдущих публикациях мы уже не раз рассказывали о полезных утилитах для работы с нашим облачным хранилищем. Сегодня мы поговорим ещё об одном интересном, простом в обращении и — не побоимся этого слова — уникальном инструменте. Знакомьтесь: rclone. Разработчики описывают его краткой и ёмкой фразой «rsync для облачных хранилищ».
Основная функция rclone — это синхронизация данных в хранилище и на локальной машине. Утилита несомненно окажется полезной для широкого круга пользователей облачного хранилища. Её можно использовать и для резервного копирования, и в работе со статическими сайтами…
Есть у rclone и опции, которых нет ни у одного другого инструмента аналогичного плана. Подробнее обо всём этом мы расскажем ниже.
Дисклеймер: этот текст опубликован давно, и часть информации об объектном хранилище Selectel в нем устарела. Актуальные данные о продукте вы найдете в официальной документации компании по ссылке.
Установка и первичная настройка
Несомненным плюсом и несомненным преимуществом 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 — делитесь опытом в комментариях.