Я столкнулся с очень странной проблемой, просто не могу понять ее.
Я переношу свой веб-сайт с общего хостинга на самоуправляемый VPS на AWS LightSail. Я забил весь public_html
каталог на исходном сайте (виртуального хостинга) и отправил его на мой целевой VPS. Целевой VPS работает под управлением Ubuntu 18.04.
На конце VPS разархивировал архив (tar xvf website.tar.gz
) в корневом каталоге веб-сайта, и он там был распакован, как и ожидалось, в 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: невозможно stat 'public_html / *': нет такого файла или каталога.
На грани своего ума я просто не могу понять, где я ошибаюсь.
Вы не можете использовать sudo cd
для входа в каталог, к которому у вас нет доступа. cd
- это встроенная оболочка, а не исполняемый двоичный файл.
Если у вас нет доступа к каталогу, вы также не можете перечислить файлы в нем, поэтому вы получаете 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/
Если у вас большое количество файлов или файлов с пробелами, все становится сложнее.