2

データベースの復元を自動化するための bash スクリプトを作成しました。次のコマンドを実行すると、/my/sql/file/path.sql: No such file or directory が表示されます。

ssh $USER@"$cloneMysqlHost" gunzip /path/file.sql.gz && MySQL -u root -p db_name < /path/file.sql 

ファイルが存在することを確認するために、ssh先のホストでls -lrotを実行しました。パーミッションが正しいことを確認するためです。

私が間違っていることはありますか?

前もって感謝します!

4

2 に答える 2

2

これ&&により、ローカルシェルがコマンドを分割し、コマンドをMySQLローカルで実行します。

<リダイレクトもローカルで行われています(およびエラーの原因)。

gunzipただし、リモートホストで実行されています。

すべての引数をリモート システムで実行する場合は、引数全体を引用符で囲む必要があります。ssh

ssh "$USER@$cloneMysqlHost" 'gunzip /path/file.sql.gz && MySQL -u root -p db_name < /path/file.sql'
于 2016-01-11T19:19:33.597 に答える
0

パスワードを正しく入力していますか?また、&& で何が起こっているのかわからない場合は、そこでパイプを使用する必要があります。MySql はおそらく無効です。mysql を使用してください。詳しくはこちらをご覧ください。

ssh $USER@"$cloneMysqlHost" gunzip /path/file.sql.gz | mysql -u root -p [password] db_name
于 2016-01-11T19:17:52.610 に答える