Fast, secure FTP / SFTP / SCP sync for VS Code.
Maintained by Blackmoon · [email protected]
Features
- 🔄 Sync Local → Remote and Remote → Local with a guided wizard
- 💾 Upload on Save — automatic upload every time you save a file
- ⚡ Settings UI — graphical settings panel, no raw JSON editing needed
- 📂 Browse Remote — navigate and manage files on the server live
- 🔒 Secure — credentials filtered from logs,
.gitignoreauto-updated on init - 🌐 Protocols — FTP, FTPS (TLS), SFTP (SSH), SCP
- 📊 Connection status bar — always see if you're connected
Quick Start
- Open your project folder in VS Code
- Press
Ctrl+Shift+P→Ftp-sync: Init - Open Settings:
Ctrl+Shift+P→Ftp-sync: Settings ⚡ - Fill in Host, Username, Password, Remote Path
- Click ✦ Save Settings
- Press
Ctrl+Shift+P→Ftp-sync: Sync Local to Remote
⚠️ Security:
ftp-sync.jsoncontains your credentials. The extension automatically adds it to.gitignore— never commit it to a public repository.
Commands
| Command | Description |
|---|---|
| Ftp-sync: Init | Create a default config file in .vscode/ |
| Ftp-sync: Settings ⚡ | Open the graphical settings panel |
| Ftp-sync: Sync Local to Remote | Upload changes to the server |
| Ftp-sync: Sync Remote to Local | Download changes from the server |
| Ftp-sync: Commit | Execute a reviewed list of sync operations |
| Ftp-sync: Upload File | Upload the currently open file |
| Ftp-sync: Download File | Download the remote version of the current file |
| Ftp-sync: Browse Remote | Navigate and manage files on the server |
You can also right-click any file in the Explorer sidebar to access Upload/Download/Browse commands.
Configuration Reference
Settings are stored in .vscode/ftp-sync.json. Use the Settings ⚡ panel to edit them visually.
| Option | Default | Description |
|---|---|---|
host |
"host" |
FTP server hostname or IP |
port |
21 |
Port (21 for FTP, 22 for SFTP/SCP) |
username |
"username" |
FTP account username |
password |
"" |
FTP account password |
remotePath |
"./" |
Remote directory to sync into |
protocol |
"ftp" |
"ftp", "sftp", or "scp" |
secure |
false |
Use TLS/FTPS (FTP only) |
passive |
false |
Use FTP passive mode (recommended behind NAT) |
uploadOnSave |
false |
Auto-upload files on Ctrl+S |
debug |
false |
Show verbose logs in Output panel |
privateKeyPath |
null |
Path to SSH private key (SFTP/SCP) |
passphrase |
null |
Passphrase for the private key |
agent |
null |
SSH agent socket (e.g. pageant) |
ignore |
["\\.git", "\\.vscode", "\\.DS_Store"] |
Regex patterns to exclude |
allow |
[] |
Whitelist regex patterns (empty = allow all) |
generatedFiles |
{ extensionsToInclude: [], path: "" } |
Auto-upload generated files by extension |
Sync Modes
| Mode | Behaviour |
|---|---|
| Full-sync | Adds, updates, and deletes orphan files on the target side |
| Safe-sync | Only adds and updates — never deletes anything |
| Force | Transfers all files regardless of size differences |
Found a Bug? Have a Question?
- Open a ticket at github.com/blackmoon87/vscode-ftp-sync/issues
- Email: [email protected]
Please include: OS, VS Code version, protocol used, and the content of the ftp-sync Output panel (with "debug": true).
Version History
- 0.4.0 — Blackmoon release: Settings UI panel, serial BFS queue (throttle fix), connect race fix, credential log filtering,
.gitignoreauto-update, connection status bar, debounce on save, spinner icons, SFTP channel caching - 0.3.9 — Fix for autogenerated files not uploading correctly
- 0.3.8 — Updated generatedFiles config; uploadOnSave works on every file
- 0.3.7 — Fix for broken uploadOnSave and subdirectories not adding properly
- 0.3.5 — SCP support, list command, ignore/allow regex fix, ssh-agent support
- 0.3.3 — Support for generated files
- 0.3.2 — FTP over SSL, sync current file, vscode 1.5+ compatibility
- 0.3.1 — SFTP private key support
- 0.3.0 — SFTP protocol support, improved sync performance
- 0.2.x — Passive mode, upload on save fixes, download fixes, sync wizard
- 0.1.0 — First release
Use at your own risk — no warranty is provided.