Ssh
SSH + MysqlDump 遠端備份腳本
我正在嘗試發出遠端 mysqldump 命令,將標準輸出重定向到 dmp 文件,然後將其 tar。
我對如何通過 ssh 執行重定向位有點困惑:
IE
ssh user@host.com mysqldump $dbname -u admin -p > dbdump.dmp && tar cvzf dbdump.tar.gz dbdump.dmp
問題:
1)我沒有提供密碼,因為我希望它提示我。ssh 遠端命令會處理這個問題嗎?2)語法是怎麼回事?我要使用引號,還是不要?重定向和管道會發生什麼?這些是否必須以某種特殊方式進行轉義或格式化。
當你連接到另一台主機時,SSH 在伺服器端執行給定的命令(如果沒有給定,它會啟動一個 shell),轉發所有的 stdin/stdout/stderr 流。該
ssh
命令在>
. 這意味著 mysql 命令的輸出被重定向到dbdump.dmp
客戶端的文件。然後,仍然在客戶端,從該文件創建一個 tar 存檔。如果您將整個命令字元串放在 Dom 建議的引號中,它將完全在遠端端執行,這樣您就可以在伺服器上擁有文件。
理論上,密碼的東西也應該起作用(因為標準輸入流沒有被重定向,而是被傳遞了),但它沒有在這裡。
您可以將密碼放入
.my.cnf
(如果您想要額外的安全性,請創建一個額外的使用者僅用於備份)。您也可以使用該帳戶的公鑰登錄,這樣它就可以完全工作而無需您的互動。順便說一句:你為什麼要創建轉儲的 tar 存檔?如果您只需要壓縮
gzip
或類似的東西就完全足夠了。