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:没有这样的文件或目录 。 但该文件存在,执行该脚本的用户有权读取该文件。

什么是造成这个错误?

好的,我应该这样做:

 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命令 – testing和工作 – 希望它可以帮助。

编辑:我应该解释 – put命令将假定远程path是相同的本地path如果没有指定一个远程path(第二个参数) – 所以没有远程path,远程服务器上找不到该文件。

给variables赋值时,不应该使用美元符号。 所以试试这个代码:

 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