Sync with rclone

rclone gives you scriptable, two-way sync against tela's [[Sync your vault (WebDAV)]] tree (/dav/) — mirror a space to disk, back it up, or keep it reconciled across machines. See that page for the URL, auth, tree layout, and the identity/delete rules; this page is the rclone recipe.

[!TIP] The fastest path is Settings → Sync → Connect a vault: it mints a sync token and prints the exact rclone commands to paste, with the token, the vendor=rclone setting and the required --ignore-size flag already filled in (Linux and macOS variants). This page is the manual reference.

Set up the remote

You need a Personal Access Token ([[API & personal access tokens]]) — write scope to push edits, read scope for a backup-only pull. Then rclone config → new remote → webdav:

Prompt Value
url https://telawiki.com/dav/
vendor rclone
user anything
pass your PAT (type it in; rclone obscures it)

Verify with rclone lsd tela: (lists your spaces) and rclone backend features tela: | head -5Precision must not be a huge number; 1000000000 (one second) is what you want.

[!IMPORTANT] vendor must be rclone, not other. That is the profile for a WebDAV server that accepts a file's modification time on upload — which tela does. On vendor=other rclone reports "modtime not supported", and combined with the mandatory --ignore-size below it is left with no way to tell an edited file from an unchanged one: it silently skips your edits, and still reports success. If you set up a vault before September 2026, fix it once:

rclone config update tela vendor rclone

[!WARNING] Always pass --ignore-size on any command that writes to tela (copy/sync/bisync/mount). tela rewrites a file's frontmatter on save, so the stored bytes differ from what you uploaded — without --ignore-size, rclone's size check treats every upload as corrupt and rolls it back. Pure read-only pulls don't need it.

Everyday use

Always --dry-run first.

# Back up a space to disk (down; never deletes locally)
rclone copy tela:engineering ./backup

# Pull a space down (down; mirrors, deletes local extras)
rclone sync tela:engineering ./engineering --create-empty-src-dirs

# Push edits up (up; never deletes on tela)
rclone copy ./engineering tela:engineering --ignore-size

[!CAUTION] rclone sync makes the destination match the source and deletes extras on the destination. Keep tela: as the source when pulling down; never sync into tela: from a stale/empty local folder. For backups use copy (never deletes).

Two-way sync (bisync)

# First run only — establishes the baseline (tela wins pre-existing diffs)
rclone bisync tela:engineering ./engineering --resync --ignore-size

# Ongoing (cron/timer)
rclone bisync tela:engineering ./engineering --ignore-size \
  --max-delete 25 --check-access --resilient

# …then pull tela's own rendering back down
rclone copy tela:engineering ./engineering --update

--max-delete/--check-access are client-side brakes that abort if a side looks empty — they complement tela's server-side delete guard. Conflicts merge server-side: non-overlapping edits combine; same-line edits keep your copy visible and the other as a recoverable revision — nothing is lost.

The trailing copy --update is what brings tela's version of a file back: a page you created on disk gets its id: assigned on the server, and a merged page gets the combined body — bisync itself won't fetch either, because it re-checks both sides before those writes happen. --update only takes files whose server copy is newer, so it does nothing once everything has settled. Skip it and a locally-created file never learns its id: — and since the id is the page's identity, renaming that file later creates a second page instead of retitling the first.

Live mount

rclone mount tela: ~/tela --vfs-cache-mode full --dir-cache-time 10s --ignore-size

On macOS use rclone nfsmount with the same flags — macOS has no FUSE, and nfsmount needs no macFUSE kernel extension:

rclone nfsmount tela: ~/tela --vfs-cache-mode full --dir-cache-time 10s --ignore-size

--vfs-cache-mode full is required for in-place editing (WebDAV can't do partial writes). WebDAV has no change notifications, so lower --dir-cache-time for fresher reads. Settings → Sync also generates a systemd user service (Linux) or a launchd agent (macOS) so the vault mounts on login.

rclone specifics