2013-03-28 90 views
0

为启动器和测试命令执行自动数据库备份。我发现对通过BASH CLI一个文本文件中的每一行执行一个动作是值得的效果:我创建的数据库名称的列表在文件的每一行上运行MySQLdump;未找到命令

# while read line ; do COMMAND $line ; done 

文件:

# mysql -uroot -e "show databases" > databases 

然后对该文件进行了以下尝试,看看它是否能正常工作。

# while read line ; do "mysqldump -uroot $line > /dbbackups/$line.sql" ; done 

表面上看,这将是正常工作,但我遇到了以下错误(S):

[04:58:46] [[email protected] database-backup-testing]# cat databases | while read line ; do "mysqldump -uroot $line > $line.sql" ; done 
-bash: mysqldump -uroot Database > Database.sql: command not found 
-bash: mysqldump -uroot information_schema > information_schema.sql: command not found 
-bash: mysqldump -uroot cphulkd > cphulkd.sql: command not found 

我不知道为什么它是给找不到命令,当明显,输出这些命令似乎是正确的。我也尝试使用mysqldump(/ usr/bin/mysqldump)的绝对路径,但它给出了相同的错误(s)。

任何人都可以填写我为什么发生这种情况?

======================

编辑:固定


如果报价被删除该脚本; IE:

# cat databases | while read line ; do mysqldump -uroot $line > $line.sql ; done 

具有引号显然是将它作为字符串执行而不是命令。

+0

在bash中尝试“哪个mysqldump”。 “ls + chmod”确保“您可以执行mysqldump” – neohope 2013-03-28 10:13:10

+0

您需要指定mysqldump的路径。但为什么不使用它的['--all-databases'](http://dev.mysql.com/doc/en/mysqldump.html#option_mysqldump_all-databases)选项? – eggyal 2013-03-28 10:13:39

+0

使用绝对路径,我已经说上面我已经试过了,返回如下: ---- -bash:在/ usr/bin中/ mysqldump的-uroot数据库> Database.sql:没有这样的文件或目录 – 2013-03-28 10:20:12

回答

0

不要打破你的头来做到这一点,我写了一个bash脚本,这将帮助你实现实际上正在尝试做的事情。没有找到 https://github.com/jeevandongre/backup-restore

+0

Hey Jeeven,谢谢你,尽管我为写自己的脚本感到自豪(帮助我学习更好!)。 – 2013-03-28 10:23:18

+0

@DavidBiers继续前进!这就是甚至学到了。所有最好的! – 2013-03-28 10:27:57

0

为什么它给命令

你的报价是不正确的,尝试是这样的:

while read line ; do mysqldump -uroot "$line" > "$line".sql ; done 

没有使用mysqldump,所以我不能与帮助特定命令的语法。

相关问题