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