Push files fast.
Sync only what changed.
DiskPush is a desktop app and CLI for rsync. Browse servers like FileZilla. Copy, sync, archive, backup or publish with resumable incremental transfers. Move files directly between two servers without routing the payload through DiskPush.
Linux first. macOS supported. Open source, MIT licensed.
curl -fsSL https://diskpush.com/install.sh | shdiskpush ./dist/ production:/srv/app/diskpush media:/srv/media/ backup:/data/media/How it works
DiskPush controls the transfer. Your files move directly between the endpoints.
DiskPush Desktop ──SFTP/SSH──> Server 1
│
└──────────SFTP/SSH──> Server 2Server 1 ═══════ rsync/SSH ═══════> Server 2
Desktop relay: none
DiskPush relay: noneBuilt for moving real trees
FileZilla-style browser
Local or Server 1 on the left, Remote or Server 2 on the right. Browse remote files over SFTP, with rename, chmod, mkdir and delete.
rsync underneath
Skip unchanged files. Preserve archive metadata. Resume partial transfers. The engine is rsync, not an imitation of it.
Server → Server
Transfer directly between two remote machines. Your desktop and DiskPush never relay the file payload, and never silently start.
Safe by default
Archive, partial resume and incremental sync are on. Destination-only files are never deleted unless you explicitly enable Mirror.
CLI included
The same engine, connections and profiles, with no GUI required. Structured JSON output and stable exit codes for scripts.
Full rsync control
Everything after -- goes to rsync verbatim. No re-parsing, no shell, no surprises.
Browse before you sync
Use SFTP to inspect the target server, then let rsync move only what changed. Before a destructive mirror, DiskPush shows the exact files that would be deleted, and the destination pane stays browsable while you decide.
How the desktop app works →┌──────────────────────────┬──────────────────────────┐
│ LEFT: Local / Server 1 │ RIGHT: Remote / Server 2 │
│ [ Local ▼ ] │ [ production ▼ ] │
│ /home/anthony/projects │ /var/www │
│ │ │
│ 📁 app │ 📁 app │
│ 📁 media │ 📁 releases │
│ 📄 package.json │ 📄 current.env │
├──────────────────────────┴──────────────────────────┤
│ [Preview Changes] [Sync →] [← Sync] [Mirror…] │
├─────────────────────────────────────────────────────┤
│ ↑ app/ 4,281 files 1.2/8.7 GB 112 MB/s 14% │
└─────────────────────────────────────────────────────┘The rsync flags you normally want are already on.
diskpush ./data/ server:/data/rsync \
--archive \
--partial-dir=.rsync-partial \
--human-readable \
--itemize-changes \
--info=progress2 \
./data/ server:/data/- Unchanged files are skipped.
- Interrupted transfers can resume.
- Destination-only files are preserved.
- Permissions, timestamps and symlinks survive.
- Nothing is deleted unless you ask for Mirror.
- Read the reasoning behind each default →
Same engine. No GUI required.
# local → server
diskpush ./dist/ prod:/srv/app/
# server → local
diskpush prod:/var/log/app/ ./logs/
# direct server → server
diskpush media:/srv/media/ backup:/data/media/
# native rsync options
diskpush ./data/ prod:/data/ -- -aHAX --checksumOpen source, and auditable on purpose
A tool that runs a copy command with your credentials, sometimes with a delete flag, should be one you can read. rsync is spawned with an argument array and no shell. Remote arguments are shielded from the remote login shell. A mirror cannot be constructed as a live job until its delete list has been confirmed.
Questions
- What is DiskPush?
- A desktop app and CLI that browses servers like an SFTP client and transfers with rsync, so unchanged files are skipped, interrupted transfers resume, and metadata survives.
- Does DiskPush use rsync?
- Yes, for every transfer. DiskPush builds the arguments and reads the output; rsync moves the bytes. `diskpush --print-args` shows the exact command.
- Does DiskPush use SFTP?
- For browsing. rsync can list files, but it cannot rename, chmod or delete, so the interactive file browser is SFTP over the same SSH connection.
- Does DiskPush upload my files to a cloud service?
- No. There is no DiskPush server in any transfer path, and no account is needed for anything.
- Can DiskPush copy directly between two servers?
- Yes. DiskPush does not act as a file relay for direct server-to-server transfers. The file payload moves directly between the two configured servers; rsync runs on the source host and connects straight to the destination.
- Does DiskPush retransmit unchanged files?
- No. rsync compares size and modification time, and skips anything that matches. Re-running a finished job moves almost nothing.
- Can interrupted transfers resume?
- Yes. Partial data is kept in a partial directory beside the destination, so a retry continues instead of starting over, and a half-received file is never mistaken for a finished one.
- Does DiskPush delete destination files?
- Only in Mirror mode, which you enable explicitly, and only after showing you the exact list of files it would delete.
- Can I use normal rsync flags?
- Everything after a standalone -- is passed to rsync verbatim. DiskPush refuses only the delete family, which would bypass the preview that exists to show you those deletions.
- Does DiskPush work without the desktop app?
- Yes. The CLI is a first-class surface sharing the same engine, connections and profiles.

