我想使用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