Upload de FTP do Linux: “Nenhum arquivo ou diretório”, mas existe um arquivo

4

Eu quero fazer upload de arquivos de backup de um servidor para outro usando ftp. No meu cronjob de backup eu uso este script para fazer upload de arquivos:

MEDIAFILE=/var/somedir/somefile.encrypted
if [ -r $MEDIAFILE ]
# File seems to exist and is readable
then
ftp -n $FTPHOST <<END_SCRIPT
quote USER $FTPUSER
quote PASS $FTPPASS
cd backups
put $MEDIAFILE
quit
END_SCRIPT
fi

Este script retorna: /var/somedir/somefile.encrypted: Nenhum desses arquivos ou diretórios . Mas o arquivo existe e o usuário que está executando o script tem direitos para ler o arquivo.

O que está causando esse erro?

    
por i.amniels 05.07.2011 / 21:21

2 respostas

7

Tudo bem, eu deveria ter feito isso para começar:

FTPHOST="domain.com"
FTPUSER="xxxxxx"
FTPPASS="xxxxxxxxx"
MEDIAFILE=/path/to/something.enc
if [ -r $MEDIAFILE ]
# File seems to exist and is readable
then
ftp -n $FTPHOST <<END_SCRIPT
quote USER $FTPUSER
quote PASS $FTPPASS
cd backups
bin
put $MEDIAFILE something.enc
quit
END_SCRIPT
fi

Eu adicionei o nome do arquivo remoto para colocar, e o comando bin - testado e funciona - espero que ajude.

Edit: Devo explicar - o comando put assumirá que o caminho remoto é o mesmo que o caminho local se um caminho remoto não for especificado (segundo parâmetro) - assim, sem o caminho remoto, o arquivo não foi encontrado no caminho servidor remoto.

    
por 05.07.2011 / 23:09
2

O sinal de dólar não deve ser usado ao atribuir valor a uma variável. Então, tente este código:

MEDIAFILE="/var/somedir/somefile.encrypted"
if [ -r $MEDIAFILE ]; # File seems to exist and is readable
then
ftp -n $FTPHOST <<END_SCRIPT
quote USER $FTPUSER
quote PASS $FTPPASS
cd backups
put $MEDIAFILE
quit
END_SCRIPT
fi
    
por 05.07.2011 / 22:00