FTP数据库转储

时间:2016-11-17 20:50:50

标签: php shell ftp cron

我有一个备份服务器,用于从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.

1 个答案:

答案 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!)。