2016-11-17 67 views
0

我有一个备份服务器,我使用FTP从shell文件到我的实时网站。目前,它可以通过FTP进入并将zip文件夹发送到备份服务器。我也希望如果得到数据库转储的话。FTP数据库转储

我已在活动网站Cron Jobs上使用以下命令来创建该文件。我想避免这种情况,并拥有这一切从shell脚本完成从FTP

mysqldump -u User DB_name -p PASS > DB.sql 

此命令的作用,如果我从Cron作业现场网站上运行它。我需要在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

这是什么脚本语言? – 2016-11-17 20:54:10

+0

这是保存在我运行的backup.sh中,目前正在运行,我对此仍然陌生,因此无法确认语言。上面设置的变量允许我通过FTP连接到服务器 –

回答

1

这部分进入顶部,因为它是一个脚本命令,而不是一个FTP命令:

mysqldump -u User DB_name -p PASS > DB.sql 

你得到错误信息,因为您将该shell命令放入ftp HEREDOC中。

然后,你做你的FTP连接HEREDOC的第一部分(不知道“报价”是应该做的):

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