Смерть, розлучення, переїзд — три найбільш стресові ситуації в житті будь-якої людини.
"Американська історія жахів".
— Андрюху, я з дому йду, допоможи з переїздом, до мене все не влізе: (
— Добре, а чи багато там?
- Тонн 7-8 ...
*Тонна (жарг.) - Терабайт.
Нещодавно, в процесі інтернет-серфінгу, я звернув увагу на те, що незважаючи на доступність на Хабре і на аналогічних йому ресурсах безлічі матеріалів про способи та моделі міграції різних типів даних, у мережі все ще постають питання з цієї теми. Які чомусь не завжди удостоюються ґрунтовних відповідей. Цей факт і сподвиг мене одного разу зібрати нотатки про реалізацію схожого рішення та оформити їх у вигляді окремого посту.

Взагалі переносити дані з одних пристроїв, систем і сервісів на інші мені доводиться з деякою настирливою періодичністю. Яка, шляхом спроб і помилок дозволила мені не тільки познайомитися з масою цікавих продуктів, а й знайти баланс між функціоналом та вартістю рішення, про яке хочу розповісти
Проектування
Як виявилося в результаті проектно-вишукувальних робіт, якість та оперативність процесу міграції залежить не тільки від технічних характеристик «майданчиків», де знаходяться або будуть дані, а й від їх фізичного розташування.
Міграційний менеджер — обчислювальний вузол, у якому функціонує «логіка» процесу — ПЗ управління міграцією.
Тобто всього існують дві моделі розміщення «міграційного менеджера»
- Модель А. Якщо хоча б до одного з майданчиків є доступ лише зсередини локальної мережі, то в цій мережі варто розміщувати і «міграційного менеджера». Бо продуктивність і час міграції все одно обмежені швидкістю та аптаймом каналу, які зв'язують майданчики.
- Модель B. Якщо і до джерела, і до приймача даних є доступ за межами локальної мережі, то «міграційного менеджера» варто селити там, де швидкість і аптайм каналу між ними буде краще.
Щоб якось декомпозувати сказане вище, пропоную повернутися до завдань з основного питання статті, і формалізувати їх у технічне завдання.
Для початку необхідно з'ясувати, чи підтримує використовуване мною програмне забезпечення «хмари»: Mail.ru, Yandex, Google Drive, Mega, Nextloud?
Коротка відповідь: «ТАК!»
Я використовую .
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 також допомагає мені вирішувати левову частку завдань, пов'язаних з автоматизацією резервування даних у .
Наступне завдання - вибір моделі розміщення "міграційного менеджера".
До всіх джерел даних - якими є різні публічні хмарні послуги, є доступ через інтернет. У тому числі через API. У двох із трьох приймачів теж. Незрозуміло лише де розгорнуть сам Nextcloud і який доступ до нього є?
Можливих варіантів я нарахував п'ять:
- На власному сервері у домашній/корпоративній мережі.
- На своєму сервері в орендованій стійці дата-центру сервіс-провайдера.
- На сервері, що орендується у сервіс-провайдера.
- На віртуальному сервері (VDS/VPS) у сервіс/хостинг-провайдера
- У сервіс-провайдера
Враховуючи те, що Nextcloud це все-таки програмне забезпечення для створення та використання хмарного сховища, можна сміливо стверджувати, що доступ до нього через інтернет доступний у всіх п'яти варіантах. І оптимальним у цьому випадку моделлю розміщення «міграційного менеджера» стане модель B.
Відповідно до обраної як майданчик для «міграційного менеджера» моделі, я виберу один з оптимальних, на мій погляд, варіантів — віртуальний сервер в найбільшої в Росії точки обміну інтернет-трафіком MSK-IX.
Третє рішення, яке необхідно прийняти, — це визначитися з конфігурацією віртуального сервера.
При выборе параметров конфигурации VDS нужно руководствоваться необходимой производительностью, которая зависит от ширины каналов между площадками, количеством и размером перемещаемых файлов, количеством потоков миграции и настройками. Что касается ОС, то Rclone — кроссплатформенное ПО, работающее под различными операционными системами, включая Windows и Linux.
Якщо планується запускати кілька процесів міграції та ще й певної періодичністю, то варто розглянути варіант оренди VDS з оплатою за ресурси.
Створення
Згідно з вищевикладеним, під час створення прототипу для цієї статті я вибрав VDS у наступній конфігурації.

вартістю 560 руб./міс. з урахуванням 15% знижки по купону БЕЗ СТРЕСУ.
Такой выбор обусловлен тем, что узел под ОС Windows, для соответствия условиям нашего ТЗ, настраивается легче, чем под другие ОС, доступные к заказу.
Оффтопік: До речі, для більшої безпеки цей віртуальний сервер призначений одним з вузлів. . і доступ до нього по RDP дозволено лише звідти.
Після створення VDS і отримання доступу до робочого столу RDP, перше що необхідно зробити - підготувати оточення для Rclone і Web-GUI. Тобто. встановити новий браузер за замовчуванням, наприклад Chrome, оскільки встановлений спочатку IE 11, на жаль, не завжди коректно працює з ПЗ, що використовується.

Після підготовки оточення завантажуємо архів із програмним пакетом і розпаковуємо його.
Далее — в режиме командной строки Windows выполняем команду перехода в папку с извлечёнными файлами. У меня она располагается в домашней папке администратора:
C:UsersAdministrator>cd rclone
Після переходу виконуємо команду запуску Rclone c Web-GUI:
C:UsersAdministratorrclone>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. Для цього переходимо до розділу Налаштування Web-GUI.
2. Ініціюємо створення нової конфігурації - кнопка Нова конфігурація.
3. Задаємо ім'я майданчику - поле Name of this drive (For your reference): Nextcloud.
4. Вибираємо тип або вид сховища Виберіть: Для Nextcloud та Owncloud основний інтерфейс обміну даними - WebDAV.
5. Далі кліком на Крок 2: Налаштування drive розкриваємо список параметрів з'єднання та заповнюємо.
- 5.1. URL of http host to connect to URL - Гіпертекстове посилання інтерфейсу WebDAV. У Nextcloud знаходяться в налаштуваннях - нижній лівий кут інтерфейсу.
- 5.2. Name of the Webdav site/service/software ви використовуєте - Ім'я інтерфейсу WebDAV. Поле необов'язкове, для себе, щоб не заплутатися, якщо таких підключень багато.
- 5.3 ім'я користувача - Ім'я користувача при авторизації
- 5.4. Пароль - Пароль для авторизації
- 5.5. Bearer token instead of user/pass (eg Macaroon) і Command to run to get a bearer token у розширених опціях додаткові параємтри та команди авторизації. У моєму Nextcloud вони не задіяні.
6. Далі тиснемо Create config і щоб переконатися у створенні конфігурації, переходимо у розділ Сонфіг веб-інтерфейсу… Через цю ж сторінку новостворену конфігурацію можна видалити або відредагувати.
Для того, щоб перевірити працездатність підключення до майданчика - переходимо в розділ дослідник. В полі Пульти дистанційного керування вводимо назву налаштованого майданчика та натискаємо відкритий. Якщо ви побачили список файлів та каталогів – з'єднання з майданчиком працює.

Для більшої переконливості можна через веб-інтерфейс створити/видалити папку або завантажити/видалити будь-який файл.
Другий по порядку майданчиком, що підключається, буде Яндекс диск.

- Перші чотири кроки аналогічні до процесу підключення Nextcloud.
- Далі все залишаємо як є, тобто поля в Step 2: Setup drive залишаємо порожніми, у розширених опціях нічого не міняємо.
- Тиснемо Створити Config.
- У браузері відкривається сторінка авторизації на Яндексі, після проходження якої, повідомлення про успішне підключення та пропозицію повернутися до Rclone.
- Що ми робимо, перевіряючи розділ конфиг.
міграція
Коли у нас підключено два майданчики, ми можемо здійснити міграцію даних між ними. Власне, процес схожий на перевірку працездатності підключення до Nextcloud, що ми проводили раніше.
- Переходимо в дослідник.
- вибираємо шаблон 2-side by side.
- У кожному з Пульти дистанційного керування вказуємо ім'я свого майданчика.
- Тиснемо відкритий.
- Бачимо каталог файлів та папок кожної з них.

Спочатку процесу міграції залишається лише вибрати потрібну папку з файлами в каталозі джерела даних і перетягнути її мишкою в каталог приймача.
Механізм додавання майданчиків і дій з міграції даних між ними аналогічний операціям, виконаним вище. Якщо під час роботи ви стикаєтеся з помилками, то подробиці про них можна вивчити в терміналі, де запущено Rclone з Web-GUI.
Взагалі, документація щодо обширна та доступна на сайті та в інтернеті, і не повинна викликати якихось складнощів у використанні. На цьому перший пост про те, як перенести файли з однієї хмари на іншу, минаючи свій ПК, вважаю завершеним.
P.S. Якщо ви не погоджуєтесь з останнім твердженням — пишіть у коментарях: яка «тема не розкрита» і в якому ключі варто продовжувати.
Джерело: habr.com
