Como fazer upload de vários arquivos para FTP do servidor Linux?

7

Eu tenho, por exemplo, backups de banco de dados no meu servidor Linux, e gostaria de escrever um script para enviá-lo para o FTP remoto. Eu tentei o comando put , mas ele só pode transferir um arquivo de cada vez. Então eu tentei o comando mput, mas ele apenas me mostra pontos de interrogação para os arquivos que eu quero transferir (talvez eu esteja usando isso errado? ..)

Eu tentei isso:

#!/bin/bash
ftp -n <<EOF
open ftp.server.com
user name password
cd backup
mput /backup/*
EOF

Mas não vai funcionar. Ele exibe nomes de arquivos que eu quero transferir com pontos de interrogação no final dos nomes. Estou faltando alguma coisa ou talvez haja uma maneira mais simples?

    
por Andrius 11.10.2013 / 09:04

3 respostas

8

Dê uma olhada em ncftp , ele vem com um utilitário ( ncftpput ) que pode ser roteirizado para essa finalidade:

$ ncftpput -R ftp.server.com /remote/path /backup

O sinalizador -R significa modo recursivo. Você pode ter seus detalhes de autenticação em um arquivo separado. Veja a manpage ( ncftpput(1) ) para detalhes.

    
por 11.10.2013 / 09:14
3

Outra alternativa pode ser usar o CurlFtpFS , um driver de sistema de arquivos FUSE que expõe um host FTP como um diretório montado (permitindo que você acessar esses arquivos com quaisquer ferramentas regulares, incluindo cp ). Eu não sei o quão bem isso funciona, mas a partir de um rápido googling em torno dele parece muito promissor. O CurlFtpFS é mais avançado do que o FUSE, portanto, deve ser estável.

Para usá-lo, instale o pacote apropriado para sua distribuição (por exemplo, Arch e Debian use o nome do pacote curlftpfs ), carregue o módulo fuse e sudo curlftpfs ftp.example.com /mnt/ftp/ -o user=username:password,allow_other , substituindo os valores apropriados por nome do servidor, ponto de montagem, nome de usuário e senha.

Há mais detalhes na página vinculada, mas isso deve ajudá-lo.

    
por 11.10.2013 / 09:38
2

Você poderia usar lftp

lftp ftp://user:[email protected] -e "mirror -e -R /local/folder /remote/folder ; quit"
    
por 16.12.2013 / 22:12

Tags