2015-02-11 46 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

相關問題