company_banner

Как перенести файлы с одного облака на другое минуя свой ПК

  • Tutorial

Смерть, развод, переезд — три наиболее стрессовых ситуаций в жизни любого человека.
«Американская история ужасов».


— Андрюх, я из дома ухожу, помоги с переездом, ко мне всё не влезет:(
— Хорошо, а много там?
— Тонн* 7-8…
*Тонна (жарг.) — Терабайт.


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



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

Проектирование


Как оказалось в результате проектно-изыскательских работ, качество и оперативность процесса миграции зависит не только от технических характеристик «площадок», где находятся или будут находиться данные, но и от их физического местоположения.

Миграционный менеджер — вычислительный узел, на котором функционирует «логика» процесса — ПО для управления миграцией.

То есть, всего существуют две модели размещения «миграционного менеджера»

  • Модель А. Если хотя бы к одной из площадок есть доступ только изнутри локальной сети, то в этой же сети стоит размещать и «миграционного менеджера». Ибо производительность и время миграции всё равно ограничены скоростью и аптаймом канала, площадки связывающие.
  • Модель B. Если и к источнику, и к приёмнику данных есть доступ за пределами локального сети, то «миграционного менеджера» стоит селить там, где скорость и аптайм канала между ними будет заведомо лучше.

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

Для начала необходимо выяснить, поддерживает ли используемое мной программное обеспечение «облака»: Mail.ru, Yandex, Google Drive, Mega, Nextloud?

Короткий ответ: «ДА!»

Я использую Rclone.

Rclone — rsync для облачных хранилищ. Open Source ПО предназначенное для синхронизации файлов и папок более чем с 45 типами и видами хранилищ.

Вот лишь некоторые из них:
— Alibaba Cloud (Aliyun) Object Storage System (OSS)
— Amazon S3
— Ceph
— DigitalOcean Spaces
— Dropbox
— Google Cloud Storage
— Google Drive
— Google Photos
— HTTP
— IBM COS S3
— Mail.ru Cloud
— Mega
— Microsoft Azure Blob Storage
— Microsoft OneDrive
— Minio
— Nextcloud
— Openstack Swift
— Oracle Cloud Storage
— ownCloud
— Rackspace Cloud Files
— rsync.net
— SFTP
— WebDAV
— Yandex Disk

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

От себя добавлю, что Rclone также помогает мне решать львиную долю задач связанных с автоматизацией резервирования данных в проекте «Väinämöinen».

Следующая задача — выбор модели размещения «миграционного менеджера».

Ко всем источникам данных — коими являются различные публичные облачные сервисы, есть доступ через интернет. В том числе и через API. У двух из трёх приёмников — тоже. Неясно только где развёрнут сам Nextcloud и какой доступ к нему есть?

Возможных вариантов я насчитал пять:

  1. На собственном сервере в домашней/корпоративной сети.
  2. На собственном сервере в арендуемой стойке дата-центра сервис-провайдера.
  3. На арендуемом у сервис-провайдера сервере.
  4. На виртуальном сервере (VDS/VPS) у сервис/хостинг-провайдера 
  5. У сервис-провайдера по модели SaaS

Учитывая то, что Nextcloud это всё-таки ПО для создания и использования облачного хранилища, можно смело утверждать что доступ к нему через интернет доступен во всех пяти вариантах. И оптимальным в этом случае моделью размещения «миграционного менеджера» станет — модель B.

Согласно выбранной в качестве площадки для «миграционного менеджера» модели, я выберу один из оптимальных, с моей точки зрения, вариантов — виртуальный сервер в дата-центре М9 крупнейшей в России точки обмена интернет-трафиком MSK-IX.

Третье решение, которое необходимо принять — это определиться с конфигурацией виртуального сервера. 

При выборе параметров конфигурации VDS нужно руководствоваться необходимой производительностью, которая зависит от ширины каналов между площадками, количеством и размером перемещаемых файлов, количеством потоков миграции и настройками. Что касается ОС, то Rclone — кроссплатформенное ПО, работающее под различными операционными системами, включая Windows и Linux.

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

Создание


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



стоимостью 560 руб./мес. с учётом 15% скидки по купону NOSTRESS.

Такой выбор обусловлен тем, что узел под ОС Windows, для соответствия условиям нашего ТЗ, настраивается легче, чем под другие ОС, доступные к заказу.

Оффтопик: Кстати, для пущей безопасности, этот виртуальный сервер назначен одним из узлов защищенной виртуальной сети. и доступ к нему по RDP разрешён только оттуда…

После создания VDS и получения доступа к рабочему столу по RDP, первое что необходимо сделать — подготовить окружение для Rclone и Web-GUI. Т.е. установить новый браузер по умолчанию, например Chrome, так как установленный изначально IE 11, к сожалению, не всегда корректно работает с используемым ПО. 



После подготовки окружения загружаем архив с программным пакетом Rclone для Windows и распаковываем его. 

Далее — в режиме командной строки Windows выполняем команду перехода в папку с извлечёнными файлами. У меня она располагается в домашней папке администратора:

C:\Users\Administrator>cd rclone

После перехода — выполняем команду запуска Rclone c Web-GUI:

C:\Users\Administrator\rclone>rclone rcd --rc-web-gui --rc-user=”login” --rc-pass=”password” -L

где “login” и “password”, заданные вами логин и пароль, естественно, без кавычек.

По факту выполнения команды в терминале выводится

2020/05/17 22:34:10 NOTICE: Web GUI exists. Update skipped.
2020/05/17 22:34:10 NOTICE: Serving Web GUI
2020/05/17 22:34:10 NOTICE: Serving remote control on http://127.0.0.1:5572/

а в браузере автоматически открывается графический веб-интерфейс Rclone.



Несмотря на то, что Web-GUI ещё находится в стадии тестовой версии и не обладает пока всеми возможностями управления Rclone, которые есть у интерфейса командной строки, его возможностей вполне достаточно для осуществления миграции данных. И даже чуть больше.

Настройка


Следующим этапом мы настроим подключения к площадкам где находятся или будут находится данные. И первым в очереди будет основной приёмник данных — Nextcloud.



1. Для этого переходим в раздел Configs Web-GUI. 

2. Инициируем создание новой конфигурации — кнопка New Config.

3. Задаём имя площадке — поле Name of this drive (For your reference): Nextcloud.

4. Выбираем тип или вид хранилища Select: Для Nextcloud и Owncloud основной интерфейс обмена данными — WebDAV.

5. Далее кликом на Step 2: Setup drive раскрываем список параметров соединения и заполняем. 

— 5.1. URL of http host to connect to URL — гипертекстовая ссылка интерфейса WebDAV. В Nextcloud находятся в настройках — левый нижний угол интерфейса.
— 5.2. Name of the Webdav site/service/software you are using — имя интерфейса WebDAV. Поле необязательное, для себя, чтобы не запутаться если таких подключений много.
— 5.3 User name — Имя пользователя при авторизации
— 5.4. Password — Пароль для авторизации
— 5.5. Bearer token instead of user/pass (eg a Macaroon) и Command to run to get a bearer token в расширенных опциях дополнительные параемтры и команды авторизации. В моём Nextcloud они не задействованы.

6. Далее жмём Create config и для того чтобы убедиться в создании конфигурации, переходим в раздел Сonfig веб-интерфейса… Через эту же страницу вновь созданную конфигурацию можно удалить или отредактировать.

Для того чтобы проверить работоспособность подключения к площадке — переходим в раздел Explorer. В поле Remotes вводим название настроенной площадки и нажимаем Open. Если вы увидели список файлов и каталогов — соединение с площадкой работает.



Для пущей убедительности можете через веб-интерфейс создать/удалить папку или скачать/удалить какой-либо файл.

Второй по порядку подключаемой площадкой будет Яндекс диск.



  • Первые четыре шага аналогичны процессу подключения Nextcloud.
  • Далее всё оставляем как есть, то есть — поля в Step 2: Setup drive оставляем пустыми, в расширенных опциях ничего не меняем.
  • Жмём Сreate Config.
  • В браузере открывается страница авторизации на Яндексе, после прохождения которой, сообщение об успешном подключении и предложением вернуться к Rclone.
  • Что мы и делаем, проверяя раздел Config.

Миграция


Когда у нас подключены две площадки, мы уже можем осуществить миграцию данных между ними. Собственно процесс похож на проверку работоспособности подключения к Nextcloud, что мы проводили ранее.

  • Переходим в Explorer.
  • Выбираем шаблон 2-side by side.
  • В каждом из Remotes указываем имя своей площадки.
  • Жмём Open.
  • Видим каталог файлов и папок каждой из них.



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

Механизм добавления оставшихся площадок и действий по миграции данных между ними аналогичен операциям, выполненным выше. Если в процессе работы вы сталкиваетесь с ошибками, то подробности о них можно изучить в терминале, где запущен Rclone с Web-GUI.

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

P.S. Если вы не согласны с последним утверждением - пишите в комментариях: какая «тема не раскрыта» и в каком ключе стоит продолжать.

RUVDS.com
RUVDS – хостинг VDS/VPS серверов

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

    +1
    Никогда еще не слышал чтобы терабайты называли тоннами…
      +1

      Я тоже:) зато помню, как мегабайты называли метрами :)

        +1
        А я помню как килобайты называли килограммами и килобасами.
      +1

      Яндекс перестал резать скорость?

        0
        Ещё как режет :) Видимо поэтому, использование в качестве площадки для развёртывания Rclone вычислительного ресурса с более высоким гарантированным аптаймом, чем домашний ПК — выглядит предпочтительней.
          0

          что с каждым месяцем Яндекс становиться все больше и больше похож на mail, очень печально

            0
              0

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

        +1
        узел под ОС Windows, для соответствия условиям нашего ТЗ, настраивается легче, чем под другие ОС

        Что-то есть сомнения. Вам даже браузер пришлось отдельно устанавливать.


        какая «тема не раскрыта» и в каком ключе стоит продолжать

        Не хватает инструкций по настройке под Linux, без GUI. Я уверен, в этом варианте они будут намного короче :)


        А если GIU так нужен, то можно и со своего браузера зайти.


        По самому rclone такой вопрос. Каковы требования к ОЗУ и диску при синхронизации из облака в облако? В идеале хотелось бы видеть графики мониторинга в процессе.

          0
          узел под ОС Windows, для соответствия условиям нашего ТЗ, настраивается легче, чем под другие ОС.
          Что-то есть сомнения. Вам даже браузер пришлось отдельно устанавливать.

          А если GIU так нужен, то можно и со своего браузера зайти.
          «Настраивается легче» здесь следует читать как — «требует меньше экспертных знаний от пользователя». Издержки редакторских правок:)

          Согласно тому, что браузер с авторизацией в Яндекс открывается на том хосте, где стоит Rclone, установка нового браузера в WinGUI требует значительно меньше экспертности от пользователя, чем в случае установки и использования консольного браузера или установки GUI для Linux.

          какая «тема не раскрыта» и в каком ключе стоит продолжать
          Не хватает инструкций по настройке под Linux, без GUI. Я уверен, в этом варианте они будут намного короче :)

          По самому rclone такой вопрос. Каковы требования к ОЗУ и диску при синхронизации из облака в облако? В идеале хотелось бы видеть графики мониторинга в процессе.
          Что короче, я бы не сказал, а вот то, что интересней — это точно. Если через описанный WebGUI можно только пока копировать данные, то через СLI ещё перемещать и синхронизировать с проверкой целостности переносимых данных. Если эта тема будет интересна, то о ней готов рассказать во следующем посте.

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

          От себя могу сказать, что для своих целей я использую Raspberry PI 3B. Но у меня основной трафик внутри локальной сети.

            0
            браузер с авторизацией в Яндекс открывается на том хосте, где стоит Rclone

            О, это меняет дело. Об этом обязательно следовало упомянуть в статье!
            А без браузера и вообще без человека авторизоваться никак нельзя?

              0
              А без браузера и вообще без человека авторизоваться никак нельзя?
              Без браузера на узле миграции для авторизации в Яндексе — нет. Но это необходимо сделать только один раз для одной учётной записи. На других хранилищах можно.

              Без человека, вернее без доступа к его учётной записи на хранилище, авторизоваться на нём, боюсь, будет никак нельзя.
          +2
          Зачем вам браузер на узле миграции, в параметрах rclone укажите чтобы он запускался на всех интерфейсах, а не только localhost.
          После это подключаетесь удаленно. Либо задайте пароль, либо вы и так используете «защищенную виртуальную сеть»
          Ну и использование целой windows для такой задачи, это как-то странно.
            0
            Зачем вам браузер на узле миграции, в параметрах rclone укажите чтобы он запускался на всех интерфейсах, а не только localhost.
            После это подключаетесь удаленно. Либо задайте пароль, либо вы и так используете «защищенную виртуальную сеть»
            На узле миграции он нужен только для авторизации в Яндекс. Лично я, даже несмотря на то, что у меня есть доступный только для доверенных узлов защищённой виртуальной сети WebGUI Rclone в составе приложений RPI-Monitor, спокойно обхожусь инструментами консоли. Как консольным браузером, так и командами настройки подключения хранилищ и запуска процессов миграции данных.
            Ну и использование целой windows для такой задачи, это как-то странно.
            Что касается Винды, то она была выбрана как наиболее понятный для неискушённого пользователя инструмент с графическим интерфейсом для создания «какого-нибудь файлового менеджера» для решения задач, указанных в вопросе начала статьи.

            image
              +1

              Большое спасибо за статью!
              Как раз есть VPS c Windows Server 2012R2
              Буду пробовать… )

                –1
                Для таких целей имхо дешевле взять прерываемую виртуалку в Яндекс Облаке в автоскейлинг группе и настроить автостарт rclone при загрузке.

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое