Mel*_*lon 6 shell wildcards rename
我在Ubuntu机器上使用MySQL数据库。
我的MySQL数据目录是/var/lib/mysql/
,因为我有一个数据库名为“ db_test ”,所以,我有一个名为db_test/
下/var/lib/mysql/
。所有表格信息都在/var/lib/mysql/db_test/
/var/lib/mysql# ls
db_test
/var/lib/mysql# cd db_test
/var/lib/mysql/db_test# ls
cars.frm
cars.MYD
cars.MYI
customers.frm
customers.MYD
...
Run Code Online (Sandbox Code Playgroud)
我想要实现的很简单,只需要新建一个名为“ backup ”的目录,并将其下的所有文件移动 /var/lib/mysql/db_test/
到该/var/lib/mysql/backup/
目录下。因此,我在主目录的子目录下运行以下命令:
~/tmp$ sudo mkdir /var/lib/mysql/backup
~/tmp$ sudo mv /var/lib/mysql/db_test/* /var/lib/mysql/backup
Run Code Online (Sandbox Code Playgroud)
第一个mkdir
命令成功运行,我确实在下面得到了一个名为“backup/”的新目录/var/lib/mysql/
但是第二个命令失败,并显示以下错误消息:
mv: cannot stat `/var/lib/mysql/db_test/*': No such file or directory
Run Code Online (Sandbox Code Playgroud)
为什么??我有db_test/
目录,/var/lib/mysql/
里面有很多表文件,为什么会出现错误信息?
PS
我知道只有 root 用户可以访问/var/lib/mysql/
. 这可能是原因吗?(但我用过sudo
),但我不确定......以及如何摆脱它?
Mat*_*Mat 12
$ sudo mv /var/lib/mysql/db_test/* /var/lib/mysql/backup
Run Code Online (Sandbox Code Playgroud)
当您键入该内容时,您用户的 shell 会尝试展开/var/lib/mysql/db_test/*
. 如果您的用户无权访问该目录,则会失败,并且不会进行任何替换。
所以mv
运行的命令sudo
将/var/lib/mysql/db_test/*
作为文字文件名。不存在具有此类名称的文件。
尝试:
$ sudo sh -c 'mv /var/lib/mysql/db_test/* /var/lib/mysql/backup'
Run Code Online (Sandbox Code Playgroud)
但你应该真的,真的可以考虑使用数据库工具来进行数据库备份。