Automatizar uploads e downloads SFTP com WinSCP

Imagens WinSCP.

Data de Publicação:

Atualizado:


Artigos > Automatizar uploads e downloads SFTP com WinSCP

status 2026 e uso seguro

Conclusão: use WinSCP.com com um arquivo de script, fixe a impressão digital da chave de host SSH do servidor, mantenha segredos fora da origem e dos argumentos do processo, habilite o registro e falhe no trabalho quando o WinSCP retornar um código de saída diferente de zero.

O que você aprenderá

  • Como as operações open, get e put com script se ajustam a um fluxo de trabalho em lote.
  • Como a verificação da chave do host evita que um trabalho autônomo confie no servidor errado.
  • Como tornar as transferências repetíveis com registros, caminhos explícitos e tratamento de erros.

A quem se destina: administradores do Windows que automatizam a transferência de arquivos para um endpoint SFTP conhecido.

Atualização para 2026: O script original abaixo contém credenciais ilustrativas em texto simples e aceita um host interativamente. Mantenha-o apenas como material de aprendizagem histórica; não implante esses segredos nem ignore as verificações da chave do host. Prefira chaves SSH ou um armazenamento secreto aprovado e teste o comportamento de recuperação.

Nota de segurança: os comandos e exemplos de configuração do artigo original não foram novamente executados num ambiente de produção atual. Antes de os aplicar, confirme as versões suportadas, as cópias de segurança, os controlos de acesso e o procedimento de reversão num ambiente de teste isolado.

Fontes primárias oficiais

Visão geral

Este guia mostra como automatizar downloads e uploads SFTP através da interface de linha de comandos do WinSCP.

Executar os comandos fornecidos pelo WinSCP utilizando o prompt de comando. Não surpreendentemente, o WinSCP fornece comandos. Normalmente usa 'WinSCP.exe', mas 'WinSCP.com' também está disponível. Quase nunca verá a pasta "C:\Program Files (x86)\WinSCP" no destino do atalho, pois normalmente abre-se basicamente a partir do atalho, mas se olhar para o destino do atalho, "WinSCP.com" também deve ser guardado lá. É aqui que a ferramenta é criada.

Tabela de Conteúdos

  1. O que é o comando WinSCP?
  2. Ferramenta de descarga automática
  3. Ferramenta de carregamento automático
  4. Outros comandos que podem ser utilizados com frequência
  5. resumo

1. O que é o comando WinSCP?

O WinSCP.com disponibiliza na linha de comandos as principais operações da interface gráfica. Um ficheiro de script pode assim executar as mesmas transferências sem intervenção manual.

1-1. O que se pode fazer.

Pode descarregar e carregar ficheiros, criar pastas, chamar comandos shell e muitas outras coisas.

Os comandos mais comuns são os seguintes.

open: abre uma sessão.

get: descarrega um ficheiro remoto.

put: envia um ficheiro local.

exit: encerra o WinSCP.

1-2. O que não se pode fazer.

As transferências simples são suportadas diretamente. Para seleções mais complexas, como filtrar ficheiros pela data de modificação, combine o script WinSCP com lógica explícita no cliente Windows ou no servidor.

O comando 'call' pode invocar um comando remoto quando o protocolo e as permissões da conta o permitem.

2. Ferramenta de descarga automática

O exemplo descarrega automaticamente registos de um servidor Linux para um computador Windows.

2-1. Criação

O exemplo utiliza as condições seguintes.

• Windows 10 como o ambiente de execução.

• O servidor a ser adquirido é o Linux.

• Endereço IP 192.168.50.10.

Primeiro, crie um ficheiro batch que servirá de ponto de entrada.

file_get.bat


@setlocal enabledelayedexpansion
@set time2=%time: =0%
@set MKDIR_NAME=%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
@set FOLDER=%~dp0%MKDIR_NAME%
@mkdir %FOLDER%
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER% 

Excepto na última linha, o resto do processo é um comando Windows. Conteúdo.

@setlocal enabledelayedexpansion

Configurações para variáveis de ambiente atrasadas. Resumidamente, esta descrição impede a definição de um valor para uma variável que pode não ser reflectida.

@set time2=%time: =0%
@set MKDIR_NAME=%date:~0,4%%date:~5,2%%date:~8,2%%time2:~0,2%%time2:~3,2%%time2:~6,2%
@set FOLDER=%~dp0%MKDIR_NAME%

O processo de obter yyyyymmddhmmss da hora actual e finalmente colocá-lo na variável FOLDER.

@mkdir %FOLDER%

Criar uma pasta 'yyyyymmddhmmss' directamente por baixo da pasta onde o lote foi executado.

@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0ftp.txt /parameter %FOLDER% 

WinSCP.com (comando WinSCP). A execução executa os comandos listados em "ftp.txt" na mesma pasta onde o ficheiro do lote é armazenado. Passe o caminho da pasta que acabou de criar como argumento.

Isto completa a criação do ficheiro de chamada. O comando WinSCP é então descrito em "ftp.txt".

ftp.txt


option batch on
option transfer binary
open test:testpassword@192.168.50.10
get /var/log/httpd/access_log %1%\
close
exit

Conteúdo.

option batch on

Para processos que requerem consultas, o sistema assume automaticamente que 'Não' foi seleccionado e executa automaticamente o processo. Se incluir isto, irá automaticamente sobrescrever quaisquer nomes de ficheiros duplicados.

(Pode criar uma pasta "yyyyymmddhmmss" e colocar aí os ficheiros, para que não haja, no entanto, nomes de ficheiros duplicados.)

option transfer binary

A configuração é para transferir os dados em modo binário.

open test:testpassword@192.168.50.10

'username:pass-word@IP address'. Ligar ao endereço IP "192.168.50.10".

get /var/log/httpd/access_log %1%\

Armazenar '/var/log/httpd/access_log' na pasta 'yyyyymmddhhmmss'. (%1%" é o argumento passado em file_get.bat)

Também podem ser utilizadas expressões regulares, por isso se escrever "/var/log/httpd/*", todo o registo pode ser recuperado.

close
exit

Este é um processo de desconexão.

Isto completa a criação da ferramenta.

2-2. preparação da implementação

Antes de automatizar a transferência, valide e registe a impressão digital da chave de host SSH do servidor esperado.

Se o servidor nunca tiver sido ligado através do WinSCP, ser-lhe-á perguntado se é seguro ligar-se. Se premir 'Sim', um registo de premir 'Sim' é deixado num local chamado área de registo do Windows. Isto assegura que o sistema não é verificado uma segunda vez. Ao executar a ferramenta, é necessário fazê-lo com antecedência e guardar informação sobre o servidor na área de registo para garantir que é seguro ligar-se, por isso executar os seguintes comandos no prompt de comando.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒É-lhe pedida uma resposta, introduza 'y'.
close
exit
exit

'test:testpassword@192.168.50.10' deve ser substituído por 'username:password@IP address'.

Isto completa os preparativos preliminares.

2-3. implementação

Finalmente, é tempo de o implementar. Faça duplo clique em 'file_get.bat'.

Sucesso se a pasta "yyyyymmddhhmmss" for criada e os registos forem guardados na pasta.

3. Ferramenta de carregamento automático

O passo seguinte é criar uma ferramenta para colocar ficheiros num servidor Linux. A construção básica será a mesma que a ferramenta de descarga.

3-1. fazendo

Criar uma ferramenta com as seguintes condições.

• Windows 10 como o ambiente de execução.

• O servidor de destino é Linux.

• Endereço IP 192.168.50.10.

Primeiro, criar um ficheiro de morcegos como ponto de partida para activação.

file_put.bat


@setlocal enabledelayedexpansion
@set FOLDER_NAME="put_files\*"
@set FOLDER=%~dp0%FOLDER_NAME%
@set PUT_FOLDER="/tmp/"
@"C:\Program Files (x86)\WinSCP\WinSCP.com" /console /script=%~dp0put_ftp.txt /parameter %FOLDER% %PUT_FOLDER%

Como foi explicado na ferramenta de descarga automática, omite-se uma pequena explicação, mas o processo é armazenar os ficheiros na pasta 'put_files' na mesma pasta onde o ficheiro do lote é executado em '/tmp/'. O processo de armazenamento efectivo é descrito em "put_ftp.txt".

put_ftp.txt


option batch on
option transfer binary
open test:testpassword@192.168.50.10
put %1% %2%
close
exit

O comando "put %1%\ %2%" carrega ficheiros de acordo com o "ficheiro fonte" e "pasta de destino" passados como argumentos, embora uma pequena explicação seja omitida porque isto também é explicado na ferramenta de descarga automática.

3-2. preparação da implementação

Tal como com a ferramenta de descarregamento automático, as impressões digitais são verificadas com antecedência antes da execução. (Não é necessário se a ferramenta de descarga automática tiver sido executada uma vez.)

Executar o seguinte comando no prompt de comando.

"C:\Program Files (x86)\WinSCP\WinSCP.com"
open test:testpassword@192.168.50.10 ⇒É-lhe pedida uma resposta, introduza 'y'.
close
exit
exit

'test:testpassword@192.168.50.10' deve ser substituído por 'username:password@IP address'.

Isto completa os preparativos preliminares.

3-3. implementação

Finalmente, é tempo de o implementar. Faça duplo clique em 'file_put.bat'.

Sucesso se os ficheiros armazenados em 'put_files' forem transferidos para a pasta '/tmp/'.

4. Outros comandos que podem ser utilizados com frequência

Introduzimos o descarregamento e carregamento básico, mas gostaríamos também de descrever outros comandos que podem ser utilizados com frequência.

4-1. autenticação de chaves

Anteriormente, iniciou sessão com autenticação de senha de acordo com a seguinte descrição.

open test:testpassword@192.168.50.10

'open username:password@IP address'. Para autenticação da chave, aplica-se o seguinte.

open test@192.168.50.10 -privatekey=id_rsa.ppk

A '-privatekey=id_rsa.ppk' é o caminho para a chave. Como é listado como um caminho relativo, assume-se que a chave (id_rsa.ppk) está também na pasta onde se encontra o ficheiro executável (bat file). Por exemplo, se a chave estiver localizada directamente debaixo da drive C, escrever "-privatekey=C:\id_rsa.ppk".

4-2. Chamar a concha

Para invocar a concha por meio do comando WinSCP, escrever como se segue.

option batch on
option transfer binary
open test:testpassword@192.168.50.10
call sh /tmp/test.sh
close
exit

test.sh' é executado por 'call sh /tmp/test.sh'. Também é possível passar argumentos. Ao passar argumentos, escreva-os como "call sh /tmp/test.sh param1".

5. resumo

O comando WinSCP foi descrito.

Se normalmente utiliza o GUI WinSCP para registar e carregar ficheiros diariamente, pode automatizar isto através da criação das ferramentas descritas neste artigo. Pode ser uma tarefa menor, mas pode demorar muito tempo, excepto se for feita todos os dias. Encorajamo-lo a criar ferramentas para melhorar a eficiência.

■INFORMATION

Artigos


■PROFILE

Perfil


■Contacto

Contacto