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

Para enviar ou buscar ficheiros todas as noites, sem abrir o FileZilla, use uma tarefa cron que corre o comando sftp com um ficheiro de instruções, ou o rsync sobre SSH. Ambos exigem autenticação por chave, porque ninguém está lá para escrever uma palavra-passe, e SSH ligado na sua conta. Nos servidores partilhados da Interweb a porta SSH é a 2299, e nem todas as contas têm shell.

Quando faz sentido

Situação Sentido Ferramenta
Buscar todas as noites o ficheiro 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 cópias de segurança para outro servidor seu De si para a outra máquina rsync

Montar, passo a passo

1 Confirme que tem SSH na sua conta. Se tem o Terminal ou o «SSH Access» no cPanel, tem. 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 ficheiros.
3 Ligue-se uma vez à mão, para aceitar a impressão digital do servidor. Sem isso, a primeira ligação do cron pára à espera de uma resposta que nunca vem.
4 Escreva o ficheiro 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 utilizador@servidor. O -b corre em modo não interactivo.
5 Ou use o rsync: rsync -az -e "ssh -p PORTA -i /home/CONTA/.ssh/CHAVE" /home/CONTA/copias/ utilizador@servidor:/destino/. Só envia o que mudou.
6 Ponha o comando no cron com registo, e confira no destino que os ficheiros 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 ficheiros. Corra assim a primeira vez e confira se a origem e o destino estão no sítio certo. Uma barra a mais ou a menos no fim do caminho muda o resultado.

Uma chave sem palavra-passe, 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 ficheiro 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 ficheiros 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 palavra-passe sem protecção. Se não houver mais nada, use FTP sobre TLS e mantenha a palavra-passe só para essa tarefa.

Não sabe se a sua conta tem SSH? Pergunte-nos, e dizemos-lhe se o plano o inclui.

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

Alojamento de sites com cPanel

Domínio e SSL incluídos, cópias diárias e o painel que já conhece. desde 5.940,00 Kz/mês (plano de 3 anos, com cupão)

Ver planos
  • 0 Utilizadores acharam útil
Esta resposta foi útil?