FTP carregando no script BASH

5

Eu preciso enviar todo o conteúdo de um diretório / home / test para meu servidor ftp, em uma pasta específica. Vou então agendar o script de hora em hora via cron. Algum exemplo?

NB. considere que estou em um Netgear ReadyNAS Duo (uma caixa debian) e não consigo instalar lftp ou similar, apenas comandos padrão:)

    
por Fabio B. 10.06.2011 / 16:35

7 respostas

12

Encontrou este script on-line com documentação de qualidade:

#!/bin/bash

HOST=ftp.server.com  #This is the FTP servers host or IP address.
USER=ftpuser             #This is the FTP user that has access to the server.
PASS=password          #This is the password for the FTP user.

# Call 1. Uses the ftp command with the -inv switches. 
#-i turns off interactive prompting. 
#-n Restrains FTP from attempting the auto-login feature. 
#-v enables verbose and progress. 

ftp -inv $HOST << EOF

# Call 2. Here the login credentials are supplied by calling the variables.

user $USER $PASS

# Call 3. Here you will change to the directory where you want to put or get
cd /path/to/file

# Call4.  Here you will tell FTP to put or get the file.
put test.txt

# End FTP Connection
bye

EOF

Após configurar e salvar o script .sh, torne-o executável:

chmod + x ftpscript.sh

Por fim, configure seu cronjob

    
por 10.06.2011 / 18:08
8

comando em uma linha:

ftp -in -u ftp://username:password@servername/path/to/ localfile
    
por 11.07.2014 / 09:51
6

curl é capaz de enviar arquivo (s) para servidores FTP.

curl -T "$FILE(s)" -u $USERNAME:$PASSWORD $SERVER/$DIR/

Você também pode usar um padrão glob para $FILE .

    
por 01.10.2015 / 11:37
2

se você tiver 'curl', que é bastante padrão, ele pode fazer uploads de FTP autônomos (veja man page para a opção -T)

    
por 10.06.2011 / 18:09
0

Se o ssh estiver instalado e configurado para permitir transferências de arquivos, você poderá usar scp .

Se não netcat ou rsync pode ser uma opção.

    
por 10.06.2011 / 17:04
0

Se você conseguir instalar ou criar programas, um utilitário chamado ftpsync pode ser exatamente o que você está procurando. [Eu nunca tentei, e parece haver várias utilidades, ou chamadas assim ou algo muito similar.]

    
por 10.06.2011 / 18:14
0

Em um script bash você deve ser capaz de fazer algo como:

    #!/bin/bash
    echo "
    verbose
    open 1.2.3.4
    USER ftpuser ftppasswd
    put /path/to/stuff.tar.gz
    bye
    " > ftp -n > ftp_$$.log

Tarring seu diretório primeiro seria uma boa idéia e tornaria muito mais simples. Além disso, dependendo do tamanho do seu diretório e da velocidade da sua rede, você pode querer considerar fazer diferenciais.

    
por 10.06.2011 / 18:09

Tags