Easy Cloud Sync

approvedunreviewed

by Geno Zhou

Sync your vault to any S3-compatible store with clear conflict resolution and a mobile-friendly sync UI.

↓ 47 downloadsUpdated 7d agoMIT

Easy Cloud Sync

Keep your Obsidian vault in sync with any S3-compatible object store — AWS S3, Cloudflare R2, MinIO, and more. Built for people who want their own bucket, clear conflict handling, and a sync UI that works well on phone as well as desktop.

中文说明见 README.zh.md。UI language follows Obsidian (getLanguage()): Chinese locales use Chinese copy; everything else uses English.

Why Easy Cloud Sync

S3-compatible by design. Point the plugin at AWS S3, Cloudflare R2, or a custom endpoint (with optional path-style addressing). You own the bucket and the credentials; network traffic goes only to the endpoint you configure — no intermediary sync service, no telemetry.

Conflict resolution you can actually use. When the same note changes on this device and in the cloud, sync pauses that path instead of guessing. The sidebar lists unresolved conflicts; Show diff opens a dedicated page with an inline unified diff (− this device / + cloud) and per-file actions: keep on this device, keep in the cloud, or skip for now.

Thoughtful mobile UI. Sync lives in a dedicated sidebar — not a cramped status-bar widget. Primary actions are full-width, tappable buttons; conflict and backup rows keep path + action on one line with touch-friendly targets. Resolving a conflict closes the diff view and returns you to the sidebar cleanly on phone and desktop.

Features

  • Bi-directional sync with a three-way journal (IndexedDB baselines)
  • Providers: AWS S3, Cloudflare R2, Other S3-compatible (custom endpoint + force path style)
  • Sync on startup, on an interval (1–30 minutes, default 5), and via Sync now
  • Sidebar ops surface: last sync summary, conflict list, backups
  • Manual snapshot backups under a backup prefix; keep the newest snapshots (default 1, configurable); optional snapshot before manual sync (off by default); Restore (overwrite same paths only)
  • Advanced → Reset local (from cloud): clear the journal, then overwrite this device from the cloud
  • Advanced → Reset cloud (from local): clear the journal, then overwrite the cloud from this device

Privacy & security

  • No client-side encryption in v1 — objects are stored as-is. Anyone with your bucket credentials can read vault contents.
  • Network requests go only to your configured S3-compatible endpoint. No telemetry.
  • The secret access key is stored via Obsidian Secret storage (requires Obsidian 1.13.0+). This plugin persists only the secret name (secretAccessKeySecretId) in data.json — never the key value. The access key ID remains a normal settings field.
  • Syncing .obsidian/ can expose other plugins’ secrets. This plugin hard-excludes its own data.json / plugin directory. Default editable excludes: **/workspace*, .trash/**.

Setup

  1. Install the plugin and enable it in Settings → Community plugins (Obsidian 1.13.0+).
  2. Open Settings → Easy Cloud Sync and configure provider, bucket, access key ID, and secret access key (via secret storage), plus prefixes.
  3. Use Test connection, then open the Easy Cloud Sync sidebar (ribbon or command) and select Sync now.

Install folder: .obsidian/plugins/easy-cloud-sync/.

Commands

IDName
easy-sync-nowSync now
easy-sync-open-sidebarOpen Easy Cloud Sync sidebar
easy-sync-backup-nowBackup now

Develop

npm install
npm run dev    # watch build → main.js
npm run build  # typecheck + production bundle
npm run lint
npm test       # unit tests (node:test + tsx)

Copy main.js, manifest.json, and styles.css into <Vault>/.obsidian/plugins/easy-cloud-sync/.

Credits

Portions of the sync engine and S3 transport are adapted from sathinduga/obsidian-s3-sync-and-backup (MIT). See LICENSE and NOTICE.

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.