2016-01-11 112 views
2

我創建了一個bash腳本,用於自動化我的數據庫恢復。當我運行以下命令時,我得到/my/sql/file/path.sql:沒有這樣的文件或目錄。gunzip和mysql的導入 - 沒有這樣的文件或目錄

ssh [email protected]"$cloneMysqlHost" gunzip /path/file.sql.gz && MySQL -u root -p db_name < /path/file.sql 

我做了一個LS -lrot我ssh主機上,只是爲了確保該文件存在的權限是正確的,他們是。

任何想法我做錯了什麼?

在此先感謝!

+1

由於'&&'和'<'的作用,您的意圖並不明確,因爲它們可能沒有達到您期望的水平。問題的確切位置(本地和遠程)以及mysql應該在哪裏運行? – jbafford

+0

您是否嘗試過在遠程主機上執行的命令周圍放置「」?就像「gunzip /path/file.sql.gz && MySQL -u root -p db_name DDay

+2

我懷疑有一個名爲「MySQL」的命令。 * nix系統區分大小寫,所以你應該使用'mysql'來代替。 –

回答

0

你是否正確提供密碼?此外,不知道發生了什麼事情,應該在那裏使用管道。 MySql可能無效,請使用mysql。有關更多詳細信息,請參見here

ssh [email protected]"$cloneMysqlHost" gunzip /path/file.sql.gz | mysql -u root -p [password] db_name 
+0

管道在這裏不正確。 'gunzip'沒有發送數據到標準輸出(雖然可以改變它來避免「臨時」文件)。 –

+0

@EtanReisner啊,你是對的。你的回答看起來正確。 –

2

&&是導致當地殼拆分命令並在本地運行的MySQL命令。

<重定向也在本地完成(以及您的錯誤原因)。

gunzip正在遠程主機上執行。

如果您希望它全部在遠程系統上運行,則需要引用整個參數到ssh

ssh "[email protected]$cloneMysqlHost" 'gunzip /path/file.sql.gz && MySQL -u root -p db_name < /path/file.sql' 
+0

非常感謝你!我並不知道在&&之後的任何事情都會在本地完成。這工作喜歡魅力! – Samantha

相關問題