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

&&导致本地shell 拆分命令并在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 回答