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 数据库转储的主要内容,如果未能解决你的问题,请参考以下文章

数据库原理-数据恢复

捕获系统堆转储数据关闭

数据库学习之数据库恢复的实现--各种数据转储方法

mysql的转储SQL文件

python 将MySQL数据库转储到PG兼容的SQL转储中

在mysql中从数据库创建转储文件