Bash + rclone · OneDrive ↔ Google Drive · Посібник з експлуатації з відкритим кодом
Хмарне передавання лише з копіюванням у Bash за допомогою rclone
rclone уже підтримує розбиття хмарних результатів на сторінки, повторні спроби, відновлюване передавання та хеші провайдерів. Інженерне завдання полягає в тому, щоб об’єднати ці базові можливості в операційну процедуру, яка враховує місткість і безпечно припиняє роботу в разі помилки.
Оновлено ; 20 хв читання.
Коротка відповідь
FileArk — простіший керований варіант для великих міграцій або міграцій без нагляду: сервіс виконує передавання онлайн, протестований на робочих навантаженнях обсягом у кілька терабайтів і перевіряє кожен результат перед завершенням. Для операторів, які хочуть керувати шляхом даних з оболонки, ця обгортка на Bash із ліцензією MIT копіює обмежені пакети через локальне проміжне сховище, побайтово перевіряє обидва етапи й ніколи не видаляє файли із джерела.
Чому варто створити обгортку для rclone, а не розробляти заново клієнт кожного провайдера
rclone надає робочому процесу в оболонці зрілий рівень абстракції провайдерів, налаштування OAuth, розбиття результатів на сторінки, механізми повторних спроб, відновлюване передавання, керування паралельністю, команди інвентаризації та перевірки. Завдяки цьому обгортка може зосередитися на незмінних вимогах міграції: командах лише для копіювання, обмеженому проміжному сховищі, резервах місткості, детермінованих списках файлів і надійному збереженні прогресу.
Але це не робить завдання автоматичним. Оператор і далі відповідає за налаштування віддалених сховищ, захист токенів, доступність мережі, нагляд за процесом, локальний диск, журнали, обмеження провайдерів, перевірку об’єктів із помилками та приймання сховища призначення. FileArk призначений для користувачів, які хочуть виконувати цю процедуру як керований онлайн-процес, а не на власній робочій станції чи сервері.
Скрипт явно ніколи не викликає rclone move, sync, delete, purge або rmdirs. Для виявлення даних він використовує lsf і about, для кожного етапу — copy, а для повної побайтової перевірки — check --download. Видаляється лише перевірений файл із локального проміжного каталогу.
Завантажте версію на Bash і ліцензію MIT
Завантажити програму передавання на Bash і rclone
Обгортка лише для копіювання з обмеженнями пакетів, резервами в локальному сховищі та сховищі призначення, повною побайтовою перевіркою, контрольними точками, налаштуваннями повторних спроб і демонстраційним режимом без доступу до мережі.fileark-cloud-transfer.sh · Bash 4+ · rclone · jq · ліцензія MIT
Завантажити ліцензію MIT
Повідомлення про дозвіл, що поширюється на обидва скрипти FileArk для перенесення вручну.LICENSE-fileark-cloud-transfer.txt · MIT · звичайний текст
Запустіть демонстрацію для оператора без доступу до мережі

Демонстраційний режим можна безпечно запускати ще до встановлення rclone або jq, оскільки після розбору аргументів програма завершує роботу до перевірки залежностей. У виведених даних зазначено заборонені руйнівні операції, показано обидва резерви місткості, а наприкінці наведено кількість видалень із джерела.
chmod +x fileark-cloud-transfer.sh
bash -n fileark-cloud-transfer.sh
./fileark-cloud-transfer.sh --demo
./fileark-cloud-transfer.sh --helpУстановіть і налаштуйте залежності для оператора
Установіть актуальну версію rclone за офіційними інструкціями, а jq — за допомогою менеджера пакетів вашої операційної системи. Потрібен Bash 4 або новішої версії, оскільки оболонка використовує сувору обробку помилок і сучасні умовні вирази.
Запустіть rclone config і створіть два віддалені сховища з окремими назвами, наприклад onedrive: і gdrive:. Введіть власні ідентифікатор і секрет клієнта провайдера, якщо правила або обмеження частоти запитів вимагають окремих застосунків OAuth. rclone зберігає токени OAuth у своєму конфігураційному файлі. Захистіть цей файл суворими дозволами доступу й ніколи не додавайте його до комплекту зі скриптом.
Перш ніж запускати обгортку, перевірте кожне віддалене сховище за допомогою команди отримання списку лише для читання та команди перевірки квоти. Якщо потрібно охопити лише піддерево, використовуйте шляхи на зразок onedrive:Department/Archive.
rclone version
rclone config
rclone lsd onedrive:
rclone lsd gdrive:
rclone about onedrive: --json | jq
rclone about gdrive: --json | jqЗафіксуйте детермінований реєстр до початку передавання байтів
Обгортка рекурсивно виконує rclone lsf із явно заданим роздільником-табуляцією та форматом sp, отримуючи розмір, після якого вказано шлях. Вона перевіряє, чи кожен розмір є числом, а кожен шлях — відносним, а потім вилучає шляхи, які вже є в перевіреній контрольній точці.
Версія на Bash відхиляє назви файлів, що містять символи табуляції, повернення каретки або нового рядка, оскільки списки --files-from-raw із розділенням новими рядками не можуть однозначно їх представити. Якщо такі назви є, скористайтеся версією на Python або спеціально розробленим форматом реєстру.
Контрольна точка на основі шляхів навмисно проста й зручна для перевірки. Вона передбачає, що шляхи в джерелі залишаються незмінними протягом запуску. Якщо можливо, заблокуйте запис у джерело. Якщо очікуються одночасні зміни, повторно сформуйте реєстр і узгодьте його.
rclone lsf "$SOURCE" \
--recursive \
--files-only \
--format "sp" \
--separator