14 мая 2026

Использование rclone для копирования файлов в GCS бакет

Попробовал использовать rclone для переноса файлов из on-prem хостинга в облако Google. В отличии от утилит gcloud или gsutil, rclone есть в репозитарии Debian/Ubuntu и его легко поставить через APT.

Для переноса я не стал создавать user-managed ключ для IAM сервис аккаунта, вместо этого взял токен от виртуальной машины которая запущена с нужными правами в GCP.

$ curl -H 'Metadata-Flavor:Google' 169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token
{"access_token":"ya29.c.[redacted]_af","expires_in":3599,"token_type":"Bearer"}

Тут важно взять весь вывод целиком если задаётся параметр "token", либо только значение "access_token" для соответствующего параметра в rclone. В противном случае будет ошибка вида:

Failed to create file system for "gcs:example-files/": failed to configure Google Cloud Storage: google: could not find default credentials. See https://cloud.google.com/docs/authentication/external/set-up-adc for more information

Далее создание конфигурации для GCS (можно отвечать на вопросы в rclone config, но на всякий случай оставлю готовую конфигурацию для приватных бакетов с uniform access) и собственно сама миграция.

$ cat ~/.config/rclone/rclone.conf
[gcs]
type = google cloud storage
project_number = 11111111111
bucket_policy_only = true
access_token = ya29.c.[redacted]_af

$ rclone sync --progress /mnt/files/ gcs:example-files/

Если не задать bucket_policy_only = true, то будет ошибка вида "Failed to set modification time: googleapi: Error 400: Cannot insert legacy ACL for an object when uniform bucket-level access is enabled. Read more at https://cloud.google.com/storage/docs/uniform-bucket-level-access, invalid".

Поправилась всеядность rclone, присутствие в репозитарии, скорость начальной и повторной синхронизации.


Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

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

Отправить комментарий