All posts

Seamless Remote Sync with Emacs and Rsync

I woke up to find half my code missing. It wasn’t gone—it was sitting safe on a remote server, but my local changes were out of sync. The kind of mismatch that slips between commits, merges, and midnight edits. That’s when Emacs and rsync became my escape hatch. Rsync is fast, dependable, and made for moving files between systems without wasting time. Emacs is more than an editor—it’s a programmable environment. When you combine them, you get a workflow that moves like thought. You save. It syn

Free White Paper

Remote Browser Isolation (RBI): The Complete Guide

Architecture patterns, implementation strategies, and security best practices. Delivered to your inbox.

Free. No spam. Unsubscribe anytime.

I woke up to find half my code missing. It wasn’t gone—it was sitting safe on a remote server, but my local changes were out of sync. The kind of mismatch that slips between commits, merges, and midnight edits. That’s when Emacs and rsync became my escape hatch.

Rsync is fast, dependable, and made for moving files between systems without wasting time. Emacs is more than an editor—it’s a programmable environment. When you combine them, you get a workflow that moves like thought. You save. It syncs. You keep working. No detours.

The core idea is simple. Rsync copies only what has changed. Over SSH, it’s encrypted, secure, and as quick as your network can push bytes. By binding rsync commands inside Emacs, that power becomes a single keystroke away. No switching to the terminal. No break in flow.

A common setup uses Emacs’ compile or async-shell-command to run rsync in the background. You write, save, hit the shortcut, and watch your files land on the target server. You can tune flags like --archive for preserving attributes, --compress for speed over slow links, and --delete to remove stale files. You can add --partial to resume interrupted transfers. Every flag changes the feel of your workflow, so test then lock in your ideal command.

Continue reading? Get the full guide.

Remote Browser Isolation (RBI): Architecture Patterns & Best Practices

Free. No spam. Unsubscribe anytime.

Why not just use Git push? Because rsync handles non-repo files, temporary assets, builds, and anything Git ignores. It works when you’re halfway through a refactor, in the middle of an experiment, or deploying raw prototypes. It’s immediate and doesn’t care about branches or history.

Configuring Emacs for rsync integration is straightforward. Define a custom elisp function that calls rsync with your preferred parameters and remote paths. Bind it to a key combo. If you want feedback in the editor, capture and display the rsync output in a buffer. Once set, the transfer is muscle memory: a single action to sync local state to production, staging, or any remote machine.

For large teams or multiple servers, it’s worth scripting dynamic target selection. You can pull host and path data from environment variables or project-specific configs. This avoids hardcoding and makes the same Emacs command work across projects. Combine it with Emacs’ directory-local variables, and each repository has its own rsync defaults ready to fire.

Speed matters, but so does trust. With Emacs and rsync, you own the pipeline. You see every file that changes, every byte that moves. No intermediaries. No hidden processes. Just your editor and a protocol proven for decades.

If you want this kind of immediacy without days of setup, you can see it live in minutes at hoop.dev.

Get started

See hoop.dev in action

One gateway for every database, container, and AI agent. Deploy in minutes.

Get a demoMore posts