mv 目录和内容到新目录

mv 目录和内容到新目录

我有一个目录: /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/

相关内容