Linux FTP 上传:“没有这样的文件或目录”,但文件存在

Linux FTP 上传:“没有这样的文件或目录”,但文件存在

我想使用 ftp 将备份档案从一台服务器上传到另一台服务器。在我的备份 cronjob 中,我使用此脚本上传文件:

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

该脚本返回:/var/somedir/somefile.encrypted:没有此文件或目录。但该文件存在,并且执行脚本的用户有权限读取该文件。

导致此错误的原因是什么?

答案1

好吧,我应该首先这样做:

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

我添加了要放置的远程文件名和 bin 命令 - 经过测试并且有效 - 希望它能有所帮助。

编辑:我应该解释一下 - 如果未指定远程路径(第二个参数),put 命令将假定远程路径与本地路径相同 - 因此如果没有远程路径,则无法在远程服务器上找到该文件。

答案2

为变量赋值时不应使用美元符号。因此,请尝试以下代码:

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

相关内容