Rclone - мощный инструмент для работы с облачными сервисами

()

Есть множество сценариев использования облачных сервисов: кто-то использует двухстороннюю синхронизацию с облаком чтобы иметь одинаковый набор файлов на нескольких устройствах, кто-то использует облако для хранения резервных копий.

Также иногда возникают разовые задачи: например перенос данных с одного облачного сервиса на другой. Далеко не все задачи можно решить с помощью "официальных" клиентов и тут на помощь приходят сторонние инструменты. Об одном из них - rclone - и пойдёт речь далее.

Rclone это мощный инструмент для работы с облачными сервисами, чем-то напоминающий rsync. Список поддерживаемых облачных сервисов весьма внушителен и на момент публикации он такой:

В качестве основного функционала разработчики отмечают:

  • Проверка целостности файлов по хэшам MD5/SHA1.
  • Сохранение временных меток создания/изменения файлов.
  • Поддержка частичной синхронизации.
  • Копирование только новых файлов.
  • Синхронизация (односторонняя).
  • Проверка файлов (по хэшам).
  • Возможность синхронизации из одного облачного аккаунта в другой.
  • Поддержка шифрования.
  • Поддержка локального кэширования файлов.
  • Возможность монтирования облачных сервисов через FUSE.

RClone есть в репозиториях Ubuntu начиная Ubuntu Cosmic (17.10) однако на сайте проекта доступна более новая версия и потому ставить будем её:

wget https://downloads.rclone.org/rclone-current-linux-amd64.deb
apt install ./rclone-current-linux-amd64.deb

Начальная конфигурация

Для начала надо "соединить" rclone с теми облачными сервисами, с которыми вы хотите работать. Делается это в интерактивном меню, вызываемом командой:

rclone config

К сожалению rclone на данный момент не поддерживает настройку подключений на машинах без запущенного X-сервера. Поэтому если вы планируете использовать rclone на такой машине то сначала надо настроить rclone на машине с X-сервером, а потом перенести её на машину без X-сервера. Во время настройки каждому соединению с облачным сервисом присваивается определённое имя. С каждым облачным сервисом можно иметь любое количество соединений. Список доступных имён соединений можно просмотреть командой:

rclone listremotes

Пример использования rclone для получения занятного места в облачных сервисах

Далее мы будем предполагать что у пользователя настроено три соединения: "GoogleDrive", "OneDrive" и "YandexDrive" соответственно с сервисами Goolge Drive, Microsoft One Drive и Яндекс Диск. Перейдём к рассмотрению возможностей rclone и примеров задач, которые можно решить с помощью этого инструмента.

Резервное копирование в облачный сервис

Самая проста задача, которая часто встречается на серверах: залить архив с резервной копией в облачной сервис. С помощью rclone это можно сделать командой вида:

rclone copy /tmp/backup-20180921.tar.bz2 GoogleDrive:/Backups/

Данная команда копирует файл "/tmp/backup-20180921.tar.bz2" в директорию "Backups" на Google-диске. Если директория не существует - она будет создана. Вместо "GoogleDrive" можно подставить имя любого другого соединения и файл будет скопирован в соответствующее хранилище.

Следующая задача: синхронизировать изменения в определённой папке в облако (новые и изменённые файлы залить, удалённые локально - удалить). Здесь можно использовать команду вида:

rclone sync --delete-after $HOME/Work YandexDrive:/MyWork

Миграция с одного облачного сервиса на другой

Rclone действительно мощный инструмент. Если вы решите перенести все свои данные или их часть с одного облачного сервиса в другой (или с одного аккаунта на другой в том же сервисе) то нет ничего невозможного. Например полностью скопировать содержимое Google-диска в Яндекс-диск можно командой вида:

rclone sync GoogleDrive:/ YandexDrive:/

Скопировать только определённую папку:

rclone sync GoogleDrive:/Work YandexDrive:/Work

Следует отметить что при копировании данные не передаются на прямую из одного сервиса в другой, а сначала скачиваются на локальный компьютер, и потом с него передаются во второй сервис. Поэтому скорость передачи зависит от скорости вашего интернета. Также следует иметь это иметь ввиду пользователям тарифов с небезлимитным трафиком.

Анализ использования хранилища

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

rclone tree OneDrive:/Images

Пример использования rclone tree

К сожалению в дереве не отображается размер файлов и директорий. Однако и тут есть решение: rclone умеет отображать дерево директорий точно так же как в приложении ncdu. Для этого можно использовать команду:

rclone ncdu OneDrive:/Images

Пример использования rclone ncdu

Монтирование

С помощью RClone можно подмонтировать удалённое хранилище (или его часть) в локальное дерево. Функционал считается экспериментальным, однако за время тестирования серьёзных проблем выявлено не было. Монтируется хранилище примерно так:

mkdir -p $HOME/OneDriveImages
rclone --vfs-cache-mode full --daemon OneDrive:/Images $HOME/OneDriveImages

Отмонтировать хранилище можно командой:

fusermount -u $HOME/OneDriveImages

Работа с подмонтированным хранилищем происходит почти так же как с локальными файлами и единственное отличие в некоторой задержке при открытии/сохранении файлов, которая вызвана необходимостью скачивать/заливать файлы. Кэширование тут помогает слабо. Но в целом режим всё равно очень удобен, особенно если у вас быстрый интернет или вы никуда не торопитесь:)

Заключение

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

На этом пока всё. Приятной работы!

Ключевые слова: rclone, ncdu, google drive, one drive, onedrive, sync.

Подписаться на обновления: RSS-лента Telegram канал Twitter

Комментарии:

Anonymous 2018-09-21 09:28:43 (#)

а мейлрушки нет :-(

MooSE 2018-09-21 10:32:07 (#)

а мейлрушки нет :-(
RClone поддерживает WebDav. А Mail.Ru он есть. Правда только для платных пользователей.
Новый комментарий

Жирный текстКурсивный текстПодчёркнутый текстЗачёркнутый текстПрограммный кодСсылкаИзображение




© 2006-2018 Вадим Калинников aka MooSE