我有一个备份服务器,用于从shell文件FTP到我的实时站点。目前,它可以FTP并将zip文件夹发送到备份服务器。如果获得数据库转储,我也希望它能做什么。
我在实时网站Cron Jobs上使用了以下命令来创建文件。我想避免这种情况,并从FTP
的shell脚本完成所有操作mysqldump -u User DB_name -p PASS > DB.sql
如果我在Cron Jobs的实际站点上运行它,此命令有效。在FTP中我需要做些什么?
ftp -n $HOST <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
mysqldump -u User DB_name -p PASS > DB.sql
END_SCRIPT
exit 0
我得到的错误是
?Invalid command.
答案 0 :(得分:1)
这部分位于顶部,因为它是一个脚本命令,而不是FTP命令:
mysqldump -u User DB_name -p PASS > DB.sql
您收到错误消息是因为您将该shell命令放在ftp HEREDOC中。
然后你执行你的ftp连接HEREDOC的第一部分(不确定&#39;引用&#39;应该做什么):
ftp -n $HOST <<END_SCRIPT
USER $USER
PASS $PASSWD
另外,根据您的ftp客户端风格,如果上面的内容似乎不起作用,您可以尝试使用USER $ USER $ PASSWD。 现在输入你的ftp命令:
cd theDirectoryWhereIWantToDropTheFile
put DB.sql
quit
最后,HEREDOC结束了:
END_SCRIPT
所以现在一起:
#!/bin/sh
#This is my script to make a sql dump file and send it via FTP to $HOST
HOST=theFTPServerName
USER=theUserName
PASSWD=thePassword
mysqldump -u User DB_name -p PASS > DB.sql
ftp -n $HOST <<END_SCRIPT
USER $USER
PASS $PASSWD
cd theDirectoryWhereIWantToDropTheFile
put DB.sql
quit
END_SCRIPT
替换HOST,USER和PASSWORD的伪造值,并且您已经拥有了一个可以不安全地发送数据的脚本,但不保证它将完好无损地到达(感谢FTP!)。