Proton Drive Sync

unlisted

by odrianoaliveira

Sync your vault to Proton Drive using the official Proton Drive CLI.

Updated 1d agoMIT
View on GitHub

Proton Drive Sync

License: MIT

An Obsidian plugin that syncs your vault to Proton Drive using the official Proton Drive CLI.

Features

  • Event-driven — debounced uploads when notes are created, modified, renamed, or deleted.
  • Manual — "Sync now" command (Command Palette) and a settings button.
  • Periodic fallback — configurable interval (default 5 minutes).
  • Configurable — remote folder, file/folder conflict strategies, debounce, ignore list, binary path.
  • Status bar + last-sync display, plus a local sync.log.

How it works

The plugin wraps the proton-drive binary (v0.9.0) and performs one-way, additive uploads. It uploads your vault's top-level entries (excluding .obsidian/ and .trash/ by default) into a remote folder (default /my-files/Obsidian), creating that folder if it does not exist yet. Files with unchanged content are skipped automatically.

Requirements

  • Obsidian desktop (the plugin is isDesktopOnly).
  • The proton-drive CLI installed and authenticated (proton-drive auth login). The plugin auto-resolves ~/.local/bin/proton-drive, or you can set an absolute path in settings.

Install (GitHub release)

  1. Download proton-drive-sync.zip from the latest release.

  2. Create the plugin folder and unzip the three files into it:

    mkdir -p "<vault>/.obsidian/plugins/proton-drive-sync"
    unzip proton-drive-sync.zip -d "<vault>/.obsidian/plugins/proton-drive-sync"
    
  3. Reload Obsidian and enable Proton Drive Sync in Settings → Community plugins.

Install (development)

cd obsidian-proton-drive-sync
npm install
npm run build
mkdir -p "<vault>/.obsidian/plugins/proton-drive-sync"
cp main.js manifest.json styles.css "<vault>/.obsidian/plugins/proton-drive-sync/"

Then enable Proton Drive Sync in Settings → Community plugins.

Development

npm install
npm run dev      # esbuild watch (rebuild on change)
npm run build    # typecheck + production bundle -> main.js

Settings

  • Remote folder — Proton Drive path (default /my-files/Obsidian).
  • Sync automatically on changes, Debounce (ms), Periodic sync (minutes).
  • File/folder conflict strategies — default create-new-revision + merge.
  • Ignore — comma-separated top-level vault names to exclude (default .obsidian, .trash).
  • Test connection and Sync now buttons, plus a last-sync display.

Limitations

  • One-way and additive: locally deleted files are NOT removed remotely. Deletion reconciliation (recoverable trash-based) is planned for a future version.
  • No filesystem watching outside Obsidian — it relies on Obsidian's change events plus the interval.
  • Proton Drive has no official sync API; this wraps the CLI's one-shot filesystem upload.

Logs

Sync outcomes are appended to sync.log inside the plugin directory (<vault>/.obsidian/plugins/proton-drive-sync/sync.log).

License

MIT

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.