MultiServerSync
Files and commands on every server at once.
Check the servers — and push files or run a command on all of them with one click. Every server reports back separately.
English · Русский
What it's for
- Hundreds of routes, one click. A tab is a scenario: "this folder → there, on these servers", "that file → elsewhere". Run with the Everywhere switch fires every tab at once.
- Copy, then run commands. A switch on a copy tab: after a successful upload its commands run — only on the servers where the copy went through.
- Commands in parallel. Command tabs run side by side — even different commands on the same server: logs in one, restart in another.
- Fast copy, verified twice. SHA-256 before sending — identical files stay put; after — proof everything arrived intact.
- No wrong server. Smart mode remembers where each command and tab usually goes and asks before an unusual target.
Add your servers once. After that: check the ones you need, pick files or type a command, press Run.
- Copy to every server — files and folders go to the checked servers in parallel. A dropped connection never leaves a truncated file: each file is swapped in whole. Failed servers are retried in one click.
- Many streams — small files travel as compressed tar batches over three streams, large files in chunks over four connections. No rsync needed on the server.
- Only what changed — compare by modification time or by SHA-256: matching files aren't sent. Checksums can be verified again after copying. Compare checks a tab against the server by the same rules and copies nothing: the status says whether they match, the output lists what is missing and what differs.
- Mark what's not uploaded — one button ticks what hasn't been copied yet or has changed since the last copy; press it again to get your previous ticks back. It never contacts the server: it compares dates on your PC. Download has the same button for what hasn't been downloaded.
- Permissions, owner and date stay put — a replaced file keeps its permissions and owner, a new one takes them from the folder it lands in.
- Download — from servers to your PC the same way: only what changed, checksum check; from several servers — each into its own subfolder. Sizes and dates in the list refresh from the servers on their own.
- Explorer — two large panes, your PC and a server, like WinSCP: Enter, F2, F5 copy, Del, or drag files between panes and out to Windows Explorer; as many tabs as you like. Create, rename, delete, copy and move show up at once, like on your PC, while the server works in the background: rows it is still busy with are dimmed, actions on one folder queue up, and entering a folder that is still being created simply waits for it; Enter confirms a delete. Permissions and owner change only in the Properties window. A server file opens in any Windows app and goes back on save. The filter mask hides files and folders alike; the server's name and address sit right above its pane.
- Edit in place — configs and scripts open in a built-in editor with line numbers, highlighting and find/replace. Encoding, line endings, owner and permissions stay as they were; the file is checked by SHA-256 after saving.
- Exclusions — masks like
node_modules and *.log stay out both ways. Each tab has its own, and global ones apply to every copy, Explorer and download tab; Standard set adds OS and editor junk, Python and JavaScript caches and .git in one click. Masks understand /build — root only, cache/ — folders only, .env — together with .env.local; the output shows how much was filtered out and by which masks.
- Commands and scripts — several commands in one tab run in turn: the next one after the previous succeeds. A script of any length goes whole through stdin; answer
[Y/n] from the app, the sudo password is supplied for you. Command sets go to favourites.
- Several windows on one tab — on Copy and Download each window has its own files, path and options. On each server they run in turn, with a terminal row per window; if a window fails, the ones below it don't start on that server.
- Terminal on the page — Copy and Download have a command box of their own. It runs on the checked servers without copying, and output, "auto", *.txt and CopyPass work just as on the Command page.
- Each server's output — live and separate, highlighted, with a zoom for larger text. Runs started within a few minutes of each other stack up in one terminal; tick "Keep log" and the tab keeps them all. The latest run is on top, runs are separated by a line, and each ends with a line: local date, time and how long it took. Actions are written to the terminal and the journal too, as a row of the server, "Computer" or "App": creating, deleting, editing lists, tabs, exclusions; the gear next to Terminal / Journal sets what gets written. The terminal and the journal survive a restart of the program. Commands after copying get a row each — copy, #1, #2 — shown as soon as copying starts, with their own status and output. Every row has its own stop: a waiting command is cancelled together with the ones below it; Stop at the top halts the whole tab. Explorer copies run side by side, waiting only when their paths overlap. Copy progress with time left.
- Logs where you need them — with "auto" ticked, the output goes to the clipboard by itself when a run finishes: one server's output, or all servers' when there are several. A long log goes as a *.txt file or with the middle cut out. With CopyPass it also lands in the next input box you click in another app and is sent with Enter. The runs table can move to a window of its own, and the app reopens where you left it.
- See what's wrong — a persistent notice when commands after copying won't run because the tab is empty. Errors in plain words.
- Tabs for different jobs — each tab has its own servers, files, path and command. The Everywhere switch starts all tabs of a section at once; the result shows on the tab labels, and a frame on a tab or section button shows where work is running and where it failed. Checked servers are highlighted, and the server label above the page opens their list. Tabs you rarely need go to an archive strip with a right-click and keep working there. A lock next to a target server pins the tab to it: other servers and sets fade out until you unlock.
- Undo and redo — arrows on the page, or Ctrl+Z and Ctrl+Y, step back through actions on a tab: paths, windows, options, commands. Every tab has its own memory, except in Explorer. A closed or renamed tab comes back with an icon in the section row.
- Connection — OpenSSH and PuTTY keys or a password, login through a jump host. Servers are two set tables side by side: move or copy servers between sets. The server's host key is remembered — a swap gets noticed.
- Passwords encrypted — under your Windows account or with a master password.
- Smart mode — asks if a command or copy is about to run on a server it doesn't usually go to.
Get started
- Unpack the archive
- Run
MultiServerSync.exe
- Add your servers — and check where to send
Windows 10 / 11 (x64), requires .NET 9 Desktop Runtime. Free, open source, no telemetry.
Build from source
Requires the .NET 9 SDK.
git clone https://github.com/FoxUSA/MultiServerSync.git
cd MultiServerSync
powershell -ExecutionPolicy Bypass -File .\Data\build.ps1
The launcher MultiServerSync.exe appears in the repository root, the program in Data, your settings in UserData. Sources: Data/src/App (the program, WPF + WPF UI, SSH.NET, AvalonEdit) and Data/src/Launcher. Developer notes (in Russian): Data/README.md.
License
GPL-3.0 — use, change and share freely; programs built on this code must stay open source too.
Keywords: multi-server SSH, SFTP sync, deploy files to multiple servers, run a command on many servers, parallel SSH, download from multiple servers, two-pane SFTP explorer, Windows SSH tool.