2016-01-11 108 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

相关问题