FTP 数据库转储
Posted
技术标签:
【中文标题】FTP 数据库转储【英文标题】:FTP Database Dump 【发布时间】:2016-11-17 20:50:50 【问题描述】:我有一个备份服务器,用于从 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.
【问题讨论】:
应该是什么脚本语言? 这保存在我运行的我运行的 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!)。
【讨论】:
以上是关于FTP 数据库转储的主要内容,如果未能解决你的问题,请参考以下文章