将mysqldump自动化到本地WIndows计算机

我试图在Windows上使用plink创build一个到Linux机器的隧道,并将转储文件放在Windows机器上。 看起来这个答案会起作用,而且是我的问题的基础。 但试一试,看看其他答案,我发现转储文件仍然在Linux机器上。 我正在使用Win和Ubuntu 14.04在本地环境中试用这个产品。 在Windows 8.1中:

plink sam@192.168.0.20 -L 3310:localhost:3306 mysqldump --port=3310 -h localhost -u sam -p --all-databases > outfile.sql 

我尝试在127.0.0.1的第二个交换本地主机,添加“-N”到隧道设置的尾部,使用dump命令中的一个表,但是尽pipe我的隧道,它就好像第一个命令被忽略。 其他答案表示要添加更多的命令到脚本,以便我可以使用pscp来复制文件。 这也意味着重新连接到垃圾这outfile.sql。 不适合在其他服务器上获取其他转储。 如果是这样的话,为什么要使用第一个命令呢?

我忽略了什么? 在plink中,第一个的输出是打开可以运行mysqldump命令的linux服务器。 但似乎忽略了第一个命令。 你觉得怎么样?

你有几个选择:

  • 将数据库远程转储到远程文件,然后将其下载到您的机器上:

     plink sam@192.168.0.20 "mysqldump -u sam -p --all-databases > outfile.sql" pscp sam@192.168.0.20:outfile.sql . 

    重定向>位于引号内,因此您将远程计算机上的mysqldump重定向到远程文件。

    这可能是最简单的解决方案。 如果您在下载之前压缩转储文件,它甚至会是最快的,尤其是在通过慢速网络连接的情况下。

  • 远程执行mysqldump ,但在本地重定向输出:

     plink sam@192.168.0.20 "mysqldump -u sam -p --all-databases" > outfile.sql 

    请注意,重定向>在引号之外,与之前的情况相比,因此您正在重定向plink的输出,即远程shell的输出,该输出包含远程mysqldump输出。

  • 隧道连接到远程MySQL数据库,并使用本地安装的MySQL( mysqldump )在本地转储数据库:

     plink sam@192.168.0.20 -L 3310:localhost:3306 

    在单独的本地控制台( cmd.exe )中:

     mysqldump --port=3310 -h localhost -u sam -p --all-databases > outfile.sql 

    在这种情况下,没有任何东西是远程运行的(隧道端除外)。