FTP/SFTP SyncExtensão do VS Code para enviar e baixar arquivos de um servidor FTP, FTPS ou SFTP direto pelo menu de contexto, com a configuração guardada no próprio projeto.
ConfiguraçãoRode FTP Sync: Criar arquivo de configuração na paleta. A extensão cria
O editor valida o arquivo e completa os campos enquanto você digita.
Como os caminhos são mapeadosCom
O que fica de fora (
|
| Situação | Significado |
|---|---|
| Igual | Nenhum lado mudou desde a última transferência |
| Alterado localmente | Mudou aqui; o servidor está como ficou |
| Alterado no servidor | Mudou no servidor; aqui está como ficou |
| Alterado nos dois lados | Os dois mudaram: confira o diff antes de sobrescrever |
| Só local / Só no servidor | Existe de um lado só |
Para arquivos que nunca passaram pela extensão, ela compara as datas de modificação. O status vira Local mais recente ou Servidor mais recente, e diferenças de até 2 segundos contam como iguais. Nesse caso o resultado depende de o relógio do servidor estar certo. Em FTP sem o comando MLSD, a data de cada arquivo que existe nos dois lados é pedida com MDTM. Se o servidor não informar data nenhuma, aparece Sem data no servidor e a comparação fica só pelo tamanho.
Comportamento
- Upload salva antes os arquivos abertos com alterações, cria as pastas que faltarem no servidor e sobrescreve os arquivos remotos.
- Download baixa primeiro para um arquivo temporário e só substitui o local quando a transferência termina. Se a conexão cair no meio, o arquivo original fica intacto. Se algum arquivo que vai ser substituído tiver alterações não salvas, a extensão pede confirmação antes de descartá-las. O download também restaura um arquivo apagado localmente (pela aba ainda aberta ou pela paleta).
- Pastas pedem confirmação antes de transferir, mostrando quantos arquivos são, para qual
usuário@hoste por qual protocolo. - O progresso aparece numa notificação. Cancelar fecha a conexão na hora, inclusive no meio de um arquivo grande. O detalhe de cada arquivo fica no painel Output → FTP Sync.
- Arquivo aqui e pasta no servidor (ou o contrário) gera um erro claro antes de qualquer arquivo ser gravado.
Segurança
- Pasta confiável: a extensão fica desativada no Restricted Mode do VS Code. Ela só funciona depois que você confia na pasta, porque um repositório de terceiros poderia trazer uma configuração apontando para outro servidor.
- Senhas: sem
passwordno arquivo, a senha é pedida na primeira conexão e guardada no SecretStorage do VS Code (Keychain no macOS). Se o servidor recusar o login, a senha salva é descartada. A senha fica atrelada ao nível de segurança do transporte: se a configuração trocar FTPS por FTP sem TLS, ou desligar a verificação do certificado, ela é pedida de novo. Para apagar a senha manualmente: FTP Sync: Esquecer senha salva. - Chave do servidor SSH: na primeira conexão SFTP aparece a impressão digital (
SHA256:...) para você confirmar. Se a chave mudar depois, a extensão avisa e não conecta sem uma nova confirmação. - .gitignore: ao criar a configuração num repositório git, a extensão oferece adicionar
.vscode/ftp-sync.jsonao.gitignore. - FTP sem TLS envia senha e arquivos em texto puro, e a extensão avisa no log a cada conexão. Prefira SFTP, ou FTP com
"secure": true(TLS 1.2 ou superior). - Links simbólicos locais: um arquivo ou pasta só é enviado ou gravado se o destino real do link ficar dentro de
localPath. Isso impede enviar ou sobrescrever arquivos fora do projeto, como~/.ssh. - Downloads: nomes vindos do servidor que tentem sair da pasta (
../,/, nomes inválidos no Windows) são ignorados, e links simbólicos para pastas não são seguidos. Uma pasta com mais de 100.000 itens ou mais de 64 níveis de subpastas é recusada.
Comandos
| Comando | O que faz |
|---|---|
| FTP Sync: Comparar com o servidor | Mostra as diferenças sem transferir nada |
| FTP Sync: Upload: sobrescrever no servidor | Envia os arquivos/pastas selecionados |
| FTP Sync: Download: sobrescrever local | Baixa os arquivos/pastas selecionados |
| FTP Sync: Criar arquivo de configuração | Cria (ou abre) .vscode/ftp-sync.json |
| FTP Sync: Testar conexão | Conecta e confere se remotePath existe |
| FTP Sync: Esquecer senha salva | Apaga senha e senha da chave guardadas |
Os itens de menu só aparecem quando algum projeto aberto tem .vscode/ftp-sync.json.
Instalação
npm install
npm run package # gera ftp-sftp-sync-0.1.0.vsix
code --install-extension ftp-sftp-sync-0.1.0.vsix
Desenvolvimento
npm run watch # rebuild contínuo; F5 no VS Code abre uma janela com a extensão
npm run typecheck
npm test # testes unitários
npm run test:integration # FTP real (ftp-srv) + SFTP real (OpenSSH via Docker; pulado sem Docker)
npm run coverage
npm run test:e2e # abre um VS Code de teste e roda os comandos de verdade
Estrutura:
src/
extension.ts ativação e registro dos comandos
config/ schema (zod), leitura do JSONC, template, .gitignore
core/ mapeamento de caminhos, ignore, motor de transferência, conexão/credenciais
clients/ FTP (basic-ftp) e SFTP (ssh2-sftp-client)
vscode/ menus, diálogos, progresso, SecretStorage, painel de comparação
webview/ script e formatação do painel (roda dentro do webview)
media/ CSS do painel
test/
unit/ integration/ e2e/