我有一个目录:
/var/lib/mysql/test_db/
其中包含组成test_db
数据库的许多文件
我现在创建了一个新目录:
/var/lib/mysql/data/
我正在尝试将test_db
目录及其内容移动到data
目录中。
我尝试过各种围绕
sudo mv /var/lib/mysql/test_db/ /var/lib/mysql/data/test_db/
但我不断收到错误:
mv: cannot move /var/lib/mysql/test_db/ to /var/lib/msyql/data/test_db/: No such file or directory
但如果我跑:
ls -lah
我明白了
drwxrwxrwx 2 root root 32K Mar 27 15:58 test_db
drwxrwxrwx 3 mysql mysql 4.0K Mar 30 10:51 data
据我所知,这意味着它们都是目录,因此都存在。
正如您所看到的,我更改了它们的权限 ( chmod 777 test_db
),但这不起作用。
我缺少什么?
答案1
删除目标数据库目录并移动test_db
目录本身。 (这也会隐式移动其内容。)
sudo rmdir /var/lib/mysql/data/test_db
sudo mv /var/lib/mysql/test_db /var/lib/mysql/data
通常,您不需要在目录名称上提供尾部斜杠。
阅读您的评论,如果您发现仍然收到“没有这样的文件或目录”错误,则可能是您的源目录test_db
已移至目标test_db
目录(给您/var/lib/mysql/data/test_db/test_db/...
)。如果是这种情况,那么rmdir
上面的操作也会失败,并出现“没有这样的文件或目录”错误。使用此命令修复它,然后重新运行此答案顶部的两个命令:
sudo mv /var/lib/mysql/data/test_db/test_db /var/lib/mysql
答案2
您的命令:
sudo mv /var/lib/mysql/test_db/ /var/lib/mysql/data/test_db/
是为了移动/var/lib/mysql/test_db/
里面 /var/lib/mysql/data/test_db/
,并最终得到/var/lib/mysql/data/test_db/test_db/
。但由于/var/lib/mysql/data/test_db/
不存在,您会收到错误。
你应该运行:
sudo mv /var/lib/mysql/test_db/ /var/lib/mysql/data/
已经/var/lib/mysql/test_db/
搬进去了/var/lib/mysql/data/
。