Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Local Folder Sync

Jens ElderingJens Eldering49 downloads

Sync Obsidian folders to external directories. Supports multiple folder pairs.

Add to Obsidian
Local Folder Sync screenshot
Local Folder Sync screenshot
  • Overview
  • Scorecard
  • Updates7

A plugin that syncs vault folders to external directories, one-way or two-way per folder pair.

Features

  • Two sync modes, per pair:
    • One-way: Files are copied FROM the source folder TO the destination folder, and destination files no longer in source are deleted (cleanup).
    • Newer file wins: Two-way sync. Whichever side (source or destination) changed most recently is copied to the other side. Files unique to one side are copied to the other. Nothing is ever deleted automatically.
  • Multiple folder pairs: Add and manage multiple source-destination pairs, each with its own mode
  • Auto-sync: Automatically sync on an interval, or on-change (as soon as a file changes)
  • Manual sync: Trigger sync via the command palette, the settings button, or the status bar indicator
  • Sync status: A status bar item shows when a sync is running and its result

Installation

Development Setup

  1. Clone or copy this project anywhere (it does not need to live inside your vault):

    git clone <repo> local-folder-sync
    
  2. Install dependencies and build:

    cd local-folder-sync
    npm install
    npm run build
    

    This produces a single bundled dist/main.js, plus dist/manifest.json and dist/styles.css. (Obsidian's plugin loader requires one bundled file — it can't require() between separate plugin files — so npm run dev/npm run build always emit one bundle, not the raw TypeScript output.)

  3. Copy dist/'s contents into your vault's plugin folder:

    mkdir -p "<vault>/.obsidian/plugins/local-folder-sync"
    cp dist/main.js dist/manifest.json dist/styles.css "<vault>/.obsidian/plugins/local-folder-sync/"
    
  4. Enable the plugin in Obsidian under Settings > Community plugins, then fully restart Obsidian if you're updating an already-loaded plugin (module load failures can be cached for the running session).

Production Use

Same as above: build, then copy dist/main.js, dist/manifest.json, and dist/styles.css into <vault>/.obsidian/plugins/local-folder-sync/.

Usage

Settings

Open the plugin settings to:

  1. Toggle Auto Sync: Enable/disable automatic synchronization
  2. Set Auto Sync Trigger: Interval (sync every N minutes) or On Change (sync as soon as a file changes)
  3. Set Sync Interval: Configure how often (in minutes) to auto-sync, when using the Interval trigger
  4. Add Sync Pairs: Add multiple folder pairs to sync
    • Source: Obsidian folder path (relative to vault root, e.g., Notes/Project)
    • Destination: Absolute local path (e.g., /Users/Jens/Documents/Backup)
    • Sync Mode: One-way (source → destination, deletes extra destination files) or Newer file wins (two-way, never deletes)
    • Enabled: Toggle individual pairs on/off

Manual Sync

  • Use the command palette: Folder Sync: Sync all folders now
  • Or click the "Sync Now" button in the plugin settings

Implementation Details

Sync Behavior

  • One-way mode: Changes are ONLY synced from source to destination
    • New/modified files in source are copied to destination
    • Files deleted from source are deleted from destination (cleanup)
  • Newer file wins mode: Two-way — whichever side changed more recently is copied to the other
    • Files unique to one side are copied to the other side
    • Nothing is ever deleted automatically in this mode
  • Subfolder support: Nested folder structures are preserved on both sides
  • Overlap protection: If two enabled pairs' destinations are the same or nested, the later one is skipped (with an error) rather than risking one pair deleting the other's files

Error Handling

  • Errors for each file/folder are collected and shown in the summary
  • Sync continues for other files even if some fail
  • Errors are logged to console for debugging

File Structure

local-folder-sync/
├── src/
│   ├── main.ts            # Main plugin class, auto-sync, watchers, status bar
│   ├── settings.ts        # Settings UI
│   ├── sync.ts            # Sync logic (one-way and newer-wins)
│   ├── types.ts           # TypeScript types
│   ├── manifest.json      # Plugin metadata
│   └── styles.css         # Custom styles
├── esbuild.config.mjs     # Bundles src/ into a single dist/main.js
├── package.json           # Node dependencies
└── tsconfig.json          # TypeScript config (type-checking only)

Building

# Development mode (watches for changes)
npm run dev

# Production build
npm run build

Notes

  • This is a desktop-only plugin (requires filesystem access)
  • Paths are normalized for cross-platform compatibility
  • The plugin prevents concurrent syncs to avoid conflicts

License

MIT

HealthExcellent
ReviewSatisfactory
About
Sync vault folders to external directories with per-pair one-way or two-way modes: one-way copies source to destination and deletes destination files removed from source; two-way copies the most recently changed file and never deletes. Manage multiple folder pairs, auto-sync on change or interval, run manual syncs, and view progress in the status bar.
SyncingFoldersFiles
Details
Current version
1.1.2
Last updated
3 days ago
Created
6 days ago
Updates
7 releases
Downloads
49
Compatible with
Obsidian 1.13.0+
Platforms
Desktop only
License
MIT
Report bugRequest featureReport plugin
Sponsor
Buy Me a Coffee
Author
Jens ElderingJens Elderingmrbot
mrbot.de
GitHubscribilicious
  1. Community
  2. Plugins
  3. Syncing
  4. Local Folder Sync

Related plugins

Google Drive Sync

Syncs a vault into Google Drive for cross-platform use (works for iOS).

Relay

Collaborate in real time with live cursors. Share folders. Manage access to updates.

Custom File Explorer sorting

Manual or automatic config-driven reordering and sorting of files and folders in File Explorer.

Quick Explorer

Perform file explorer operations (and see your current file path) from the title bar, using the mouse or keyboard.

Nutstore Sync

Sync your vault with Nutstore (坚果云) using WebDAV protocol.

Flexplorer

Enhance the file explorer with custom sorting, pinning, and hiding.

Multi Properties

Add properties to multiple notes at once. Either right-click a folder or select multiple notes and right-click the selection.

GridExplorer

Browse and organize note files visually in a flexible grid layout.

File Explorer Note Count

See the number of notes in each folder within the file explorer.

File Tree Alternative

An alternative file tree view with separate folder and file panes.