Loading page...Загружаем страницу...正在加载页面...
AtlasRepo

My Backup Was Crawling Because I Was Using Someone Else's API Quota

Description and use

Migrated a terabyte backup from OneDrive to Google Drive by creating a personal OAuth client to avoid shared quota limits, and purged the old remote to reclaim ~1 TB of space.

Problem

The OneDrive backup subscription ended, forcing a move of a terabyte of data to a Google Drive account that was using a shared OAuth client, which hit a global rate limit.

Outcome

The migration succeeded: backups now use the user’s own Google Drive quota, the restic repo identity is unchanged, and ~1 TB was reclaimed from the old remote. However, no snapshots exist yet because the seed has only uploaded 2.88 GB of ~1 TB.

Workflow

  • Read existing rclone configs (GUI and CLI) and verify restic repo identity via guid = sha256(id).
  • Append new Google Drive remotes to rclone.conf and update Portainer stack environment to use the new crypt remote.
  • Initialize a new restic repo on Google Drive and update Backrest SetConfig to point to the new URI.
  • Run the seed migration; monitor logs for RATE_LIMIT_EXCEEDED errors.
  • Create a new Google Cloud project, set up OAuth consent screen as Desktop app, publish the app, and obtain client_id, client_secret, and refresh token.
  • Insert the new credentials into both rclone configs and enable use_trash=false and stop_on_upload_limit=true.
  • Purge the old remote to reclaim space, verifying the operation by reading the used/free space rather than exit code.
  • Pause the file-sync container to confirm load average reduction and ensure network is not the bottleneck.
  • Verify that the new repo has the same repo id/guid and that snapshots will be created once the seed completes.
  • Monitor the seed progress and confirm that the first snapshot lands before considering the backup complete.

Evidence

The call came in the least convenient way: the OneDrive account holding my nightly backups had no subscription any more, and I had a 1.5-year Google subscription sitting unused.

Source

Two rclone configs, which is the kind of detail that bites: the GUI config that Backrest (the restic front end) uses, plus a separate stale CLI copy that a cron job or a human shell had been using at some point.

Source

'Read requests per minute' ... reason: RATE_LIMIT_EXCEEDED consumer: projects/202264815644 <- not my project quota_limit_value: 840000

Source

There is exactly one real fix: stop using the shared client and bring your own. That means a Google Cloud project, an OAuth consent screen, and a credential.

Source

The old remote reported an error — itemNotFound — and the space came back anyway: Used: 1.012 TiB -> 3.800 GiB Free: ~0 -> 1.007 TiB

Source

  • Record date: 2026-10-25T05:11:29.597Z