Transferências automáticas de arquivos: SFTP e rsync agendados a partir de um script

Automação e n8n··· 298 visualizações· 3 min de leitura

Para enviar ou buscar arquivos todas as noites, sem abrir o FileZilla, use uma tarefa cron que roda o comando sftp com um arquivo de instruções, ou o rsync sobre SSH. Ambos exigem autenticação por chave, porque ninguém está lá para escrever uma senha, e SSH ligado na sua conta. Nos servidores compartilhados da MozOut a porta SSH é a 2299, e todos os planos têm SSH.

Quando faz sentido

Situação Sentido Ferramenta
Buscar todas as noites o arquivo de preços de um fornecedor Do fornecedor para si sftp com get, ou rsync
Enviar exportações a um parceiro De si para o parceiro sftp com put
Copiar backups para outro servidor seu De si para a outra máquina rsync

Montar, passo a passo

1 Confirme onde está o SSH. Todos os planos o têm: o Terminal e o «SSH Access» aparecem no cPanel. Veja SFTP em vez de FTP.
2 Crie uma chave só para esta tarefa. No «SSH Access» do cPanel gera-se um par. Se o destino for outra máquina, a chave pública tem de ser autorizada lá, na conta que vai receber os arquivos.
3 Ligue-se uma vez à mão, para aceitar a impressão digital do servidor. Sem isso, a primeira conexão do cron para à espera de uma resposta que nunca vem.
4 Escreva o arquivo de instruções do sftp, com linhas como cd /pasta e put /home/CONTA/export.csv. O comando é sftp -P PORTA -i /home/CONTA/.ssh/CHAVE -b /home/CONTA/instrucoes.txt usuário@servidor. O -b roda em modo não interativo.
5 Ou use o rsync: rsync -az -e "ssh -p PORTA -i /home/CONTA/.ssh/CHAVE" /home/CONTA/copias/ usuário@servidor:/destino/. Só envia o que mudou.
6 Ponha o comando no cron com registro, e confira no destino que os arquivos chegaram: tarefas cron.

Ensaie antes de agendar. O rsync tem uma opção de simulação (-n, ou --dry-run) que mostra o que copiaria sem copiar nada, e -v lista os arquivos. Corra assim a primeira vez e confira se a origem e o destino estão no site certo. Uma barra a mais ou a menos no fim do caminho muda o resultado.

Uma chave sem senha, num cron, é uma chave que quem a roubar usa. Por isso use uma chave só para esta tarefa, com a conta de destino limitada à pasta de que precisa, e permissões de leitura só para si no arquivo da chave. Nunca a ponha dentro de public_html.

O rsync tem uma opção que apaga a origem depois de enviar (--remove-source-files). É útil e perigosa: use-a só depois de ter visto a cópia funcionar durante várias noites, e nunca com arquivos que só existem ali. Para a estratégia de cópias, veja fazer e guardar a sua própria cópia, e testar que funciona.

Se o fornecedor só oferece FTP, peça-lhe SFTP. FTP simples envia a senha sem proteção. Se não houver mais nada, use FTP sobre TLS e mantenha a senha só para essa tarefa.

Não sabe onde está o SSH, ou como montar a chave? Pergunte-nos. Todos os planos o incluem.

Abrir um pedido

VEJA TAMBÉM

SFTP em vez de FTP: quando pode e porque é melhor

O Terminal do cPanel: uma linha de comandos sem nada para instalar

Cópias automáticas da sua aplicação: cron e mysqldump

PRODUTO RECOMENDADO

Hospedagem de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde R$ 36,30/mês (plano de 3 anos, com cupom)

Ver planos
Esta resposta foi útil? Sua resposta nos ajuda a melhorar este artigo.