Obsah

Synchronizace Google Drive z terminálu pomocí rclone

Vytvořeno: 31.8.2026 | Aktualizováno: 31.08.2026 14:04

rclone umožňuje z terminálu kopírovat a synchronizovat data do Google Drive včetně Google Shared Drive. Tento postup používá service account s přístupem pouze do jedné cílové složky; hodí se pro pravidelnou zálohu nebo zrcadlení dat z Linuxu.

Princip a oprávnění

Service account je samostatný technický účet Google s JSON klíčem. Je vhodný pro neinteraktivní běh na serveru nebo v plánované úloze, protože nepoužívá přihlašování uživatele v prohlížeči.

root_folder_id v konfiguraci pouze určuje kořen, který rclone používá. Skutečné omezení přístupu řeší oprávnění v Google Drive: service account nesmí zůstat členem celého Shared Drive, má být nasdílený jen na cílovou složku.

Vytvoření service accountu v Google Cloud Console

Tady je konkrétní postup v Google Cloud Console. Pro rclone není potřeba nastavovat domain-wide delegation ani přidělovat service accountu roli v IAM projektu. Přístup k datům se nastaví až sdílením složky v Google Drive.

  1. V Google Cloud Console vytvoř nový projekt, například firma-rclone-backup. V horním přepínači projektů zvol New project, vyplň název a dokonči vytvoření.
  2. Otevři APIs & Services → Library, vyhledej Google Drive API a klikni na Enable. Google tento krok popisuje v návodu na zapnutí API.
  3. Otevři IAM & Admin → Service Accounts a klikni na Create service account. Google Cloud dokumentace tento průchod uvádí pod stejnými názvy položek.
  4. Zadej název, například rclone-backup. Google podle něj vytvoří ID i e-mail ve tvaru rclone-backup@ID_PROJEKTU.iam.gserviceaccount.com.
  5. Pokračuj přes Create and continue. Volitelné přidělení rolí pro projekt přeskoč a vytvoření dokonči tlačítkem Done.
  6. V seznamu service accountů klikni na právě vytvořený e-mail, otevři záložku Keys a zvol Add key → Create new key → JSON → Create.
  7. Prohlížeč stáhne JSON klíč. Ulož ho k rclone konfiguraci, například jako ~/.config/rclone/service-account.json. Tento soubor obsahuje soukromý klíč; po vytvoření jej Google už znovu nenabídne ke stažení.

Sdílení cílové složky

V Google Drive otevři konkrétní složku na Shared Drive určenou pro zálohy a přes Sdílet přidej e-mail service accountu. Pro zápis, čtení a případné mazání při použití rclone sync byl použit přístup Content manager.

Pokud byl service account předtím přidán jako člen celého Shared Drive, odeber ho ze správy členů disku. Jinak bude mít přístup i mimo cílovou složku a root_folder_id nebude bezpečnostní hranice.

Konfigurace rclone

Přesnou cestu ke konfiguraci ukáže tento příkaz:

rclone config file

Pro běžné uživatelské spuštění bývá konfigurace v ~/.config/rclone/rclone.conf. Konfigurace remote pro konkrétní složku na Shared Drive vypadá takto:

[gdrive-folder]
type = drive
service_account_file = /home/uzivatel/.config/rclone/service-account.json
scope = drive
team_drive = ID_CELEHO_SDILENEHO_DISKU
root_folder_id = ID_CILOVE_SLOZKY

team_drive je ID celého Shared Drive a přepíná rclone do režimu Shared Drive. root_folder_id je ID konkrétní cílové složky, kterou rclone považuje za svůj kořen. Obě ID jsou poslední částí URL po otevření příslušného disku nebo složky v prohlížeči.

Ověření omezeného přístupu

Pro ověření je vhodné ponechat původní remote mířící na celý disk, například gdrive-shared, a vytvořit nový remote gdrive-folder s root_folder_id.

  1. Přístup k celému disku musí po odebrání service accountu z členů disku selhat nebo vrátit prázdný výsledek:
rclone lsd gdrive-shared:
  1. Přístup k povolené složce musí fungovat:
rclone lsf gdrive-folder:
  1. Nakonec je potřeba otestovat skutečný zápis a případné mazání, pokud bude použit rclone sync:
printf 'test\n' > /tmp/test-zapisu.txt
rclone copy /tmp/test-zapisu.txt gdrive-folder:
rclone lsf gdrive-folder:
rclone delete gdrive-folder:test-zapisu.txt
rm /tmp/test-zapisu.txt

V tomto nastavení byl omezený přístup na jedinou složku ověřen v praxi. Pokud test selže, může Shared Drive zakazovat sdílení jednotlivých položek s účty, které nejsou členy celého disku.

Kopírování nebo synchronizace

rclone copy přenáší jen nové nebo změněné soubory; identické soubory porovnává podle velikosti a času změny, případně kontrolního součtu. Na cíli ale nikdy nemaže soubory, které byly ze zdroje odstraněny.

SOURCE_DIR="/data/co-chci-zalohovat"
rclone copy "$SOURCE_DIR" gdrive-folder:aktualni \
  --log-file="$HOME/.local/state/rclone-backup.log" \
  --log-level INFO \
  --transfers 4 \
  --retries 3

Proč cíl nesmí obsahovat datum

rclone copy je přírůstkový už sám o sobě, ale jen pokud stále porovnává stejný zdroj a stejný cíl. Cesta gdrive-folder:aktualni proto musí zůstat stejná.

Nedávej do cílové cesty datum, například gdrive-folder:zalohy/$(date +%F). Rclone by každý den viděl novou prázdnou složku, neměl by s čím porovnávat a znovu by nahrál všechny soubory. Datum patří až do --backup-dir, kde se ukládají pouze nahrazené a smazané verze.

rclone sync vytváří zrcadlo zdroje: přenese pouze změněné soubory a na cíli odstraní to, co už ve zdroji není. Před prvním ostrým během je nutné příkaz spustit s --dry-run, protože sync může mazat data.

SOURCE_DIR="/data/co-chci-zalohovat"
REMOTE_AKTUALNI="gdrive-folder:aktualni"
REMOTE_STARE="gdrive-folder:stare/$(date +%F)"
 
rclone sync "$SOURCE_DIR" "$REMOTE_AKTUALNI" \
  --backup-dir "$REMOTE_STARE" \
  --log-file="$HOME/.local/state/rclone-backup.log" \
  --log-level INFO \
  --transfers 4 \
  --retries 3 \
  --drive-stop-on-upload-limit \
  --dry-run -v

Po kontrole výpisu se --dry-run odstraní. Volba --backup-dir nepřepisuje ani nemaže starou verzi natrvalo: přesune ji do stare/RRRR-MM-DD. aktualni tak zůstává přesným obrazem zdroje, zatímco stare obsahuje změněné a smazané soubory.

Retence starých verzí

Složka stare roste podle množství změn. Po zvolené době retence lze staré soubory a prázdné adresáře odstranit například takto:

rclone delete gdrive-folder:stare/ --min-age 90d
rclone rmdirs gdrive-folder:stare/ --leave-root

Provozní limity Google Drive

Podle dokumentace rclone pro Google Drive je aktuálně možné nahrát přibližně 750 GiB za den. Rclone tento limit označuje jako nedokumentovaný limit Google, takže se může změnit.

Při dosažení limitu může běžný příkaz opakovat neúspěšné pokusy. Parametr --drive-stop-on-upload-limit rozpozná tento typ chyby a ukončí běh synchronizace. Další přenos je pak potřeba provést až po obnovení denního limitu.

Pro stahování uvádí rclone limit přibližně 10 TiB za den. Pro tento článek je důležitější uploadní limit, protože přenos probíhá z lokálního počítače na Shared Drive.

Další důležité chování

Zdroje