2015-02-11 50 views
2

我试图在Windows上使用plink来创建到Linux计算机的隧道,并使转储文件在Windows计算机上结束。这似乎this answer将工作,并且是我的问题的基础。但试一试,看看其他答案,我发现转储文件仍然在Linux机器上。我正在使用Windows和Ubuntu 14.04在本地环境中尝试此操作,然后再转到生产环境。在Windows 8.1:将mysqldump自动运行到本地Windows计算机

plink [email protected] -L 3310:localhost:3306 

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

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

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

+0

你在哪里执行'mysqldump'? – 2015-02-12 07:28:28

+0

是的,很好的问题。在Windows cmd中,我执行了plink中的第一个命令来创建隧道。它作为登录的ssh命令进入Linux主机。因此mysqldump在linux服务器上执行。我在Linux的其他SO帖子中看到,他们最后使用了'-N'标志。试图在Windows中这样做,留下了CMD程序。于是我打开了一个新的CMD窗口,并执行了mysqldump来判断隧道是否打开。我相信这里缺少一些东西。 – sam452 2015-02-12 19:33:50

回答

1

您有几种选择:

  • 远程转储数据库到远程文件,并随后下载到本机:

    plink [email protected] "mysqldump -u sam -p --all-databases > outfile.sql" 
    pscp [email protected]:outfile.sql . 
    

    重定向>是引号内,所以您正在将远程计算机上的mysqldump重定向到远程文件。

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

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

    plink [email protected] "mysqldump -u sam -p --all-databases" > outfile.sql 
    

    注意重定向>是报价之外,比较以前的情况,所以要重定向的plink的输出,即输出的远程外壳,其中包含远程mysqldump的输出。

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

    plink [email protected] -L 3310:localhost:3306 
    

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

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

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

+0

你的回答在我与其他人失败的地方工作,thx。 – sam452 2015-02-13 16:34:43

相关问题