我面临一个非常奇怪的问题,就是无法弄清楚它到底是什么。
我正在将我的网站从共享主机迁移到 AWS LightSail 上的自管理 VPS。我将public_html
(共享主机) 源站点上的整个目录打包成 tarball 并将其复制到我的目标 VPS。目标 VPS 运行的是 Ubuntu 18.04。
tar xvf website.tar.gz
在 VPS 端,我在网站根目录中解压了档案( ),并且它在那里被解压,不出所料,是在目录public_html
内的子目录中<website_root>
。
但是当我尝试将目录的内容移动<website_root>/public_html
到<website_root>/
目录中时,它给出了一个permission denied
错误。但是当我尝试 sudo 并像这样输入时:
$ sudo cd public_html/
它说:
cd:未找到命令。
我甚至尝试将 public_html 目录的内容移动到根文件夹中,如下所示:
$ sudo mv public_html/* .
它给我的错误是:
mv:无法统计‘public_html/*’:没有此文件或目录。
我绞尽脑汁,就是想不通我错在哪里。
答案1
您不能使用sudo cd
它进入您无权访问的目录。cd
是 shell 内置命令,而不是执行的二进制文件。
如果您无权访问该目录,您也无法列出那里的文件,这就是为什么您需要No such file or directory.
使用mv public_html/*
。
成为 root 并随后移动文件。
sudo -i
cd public_html
mv * /to/target/dir/
logout
或者,您可以更改该目录的权限,以便您可以读取它(chmod a+r public_html
当您不再需要它时请不要忘记恢复它)或使用以下输出sudo ls
:
sudo ls public_html |xargs -I "{}" sudo mv {} /to/target/dir/
如果您有大量文件或带有空格的文件,情况就会变得更加复杂。