我有一个备份服务器,我用它从shell文件FTP到我的活动站点。目前,它可以FTP进入并发送一个zip文件夹到备份服务器。如果获得数据库的转储,我还希望它做什么。
我在实时站点Cron Jobs上使用了以下命令来创建文件。我希望避免这种情况,并在FTP
的shell脚本中完成所有操作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.
这部分放在顶部,因为它是一个脚本命令,而不是FTP命令:
mysqldump -u User DB_name -p PASS > DB.sql
你得到了错误信息,因为你把shell命令放在ftp HEREDOC中。
然后执行ftp连接的第一部分HEREDOC(不确定'quote'应该做什么):
ftp -n $HOST <<END_SCRIPT
USER $USER
PASS $PASSWD
还取决于您的ftp客户端风格,如果上面的东西似乎不起作用,您可以尝试USER $USER $PASSWD。现在输入ftp命令:
cd theDirectoryWhereIWantToDropTheFile
put DB.sql
quit
最后,herdoc:
结束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!)。