我尝试在Windows上使用plink
创建到Linux计算机的隧道,并将转储文件放在Windows计算机上。似乎this answer会起作用并且是我问题的基础。但是试一试并查看其他答案我发现转储文件仍在Linux机器上。我在使用Windows和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
我已经尝试在localhost
的第二个中交换127.0.0.1
,在隧道设置的尾部添加-N
,使用dump命令中的一个表但是尽管我的隧道,它好像忽略了第一个命令。其他答案表明要向脚本添加更多命令,以便我可以使用pscp
来复制文件。这也意味着重新连接到垃圾箱outfile.sql
。不适合在其他服务器上获取其他转储。如果是这样的话,为什么要使用第一个命令?
我在俯瞰什么?在plink
中,第一个的输出是打开Linux服务器,我可以在其中运行mysqldump
命令。但似乎忽略了第一个命令。你觉得怎么样?
答案 0 :(得分:1)
您有几种选择:
将数据库远程转储到远程文件,然后将其下载到您的计算机:
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
在这种情况下,没有任何东西是远程运行的(隧道端除外)。