Задать вопрос
besogonskiy
@besogonskiy
работаю php laravel разработчиком.

Как сделать чтобы проект удалил папку с самим собой и на её место скопировал другую папку?

Столкнулся с задачей, которую пока не удалось решить. Нужно чтобы проект на бэкэнде запустил php скрипт, который бы извлёк из переданного с фронтэнда архива все файлы, положил их во временную папку операционной системы, потом удалил бы содержимое всей папки бэкэнда и потом на ее место скопировал бы содержимое из временной папки разархивированного проекта (восстановление из бепака).

Конечно же пытался вызвать команду shell linux
rm -rf /home/user/project/{*,.*}
Но это не работает, потому что скрипт не может удалить папку, в которой сам находится.

Если запустить эту команду просто из консоли, то содержимое папки удаляется.

Но как это организовать всё?

Пока мысль только такая:

1) - при получении с фронтэнда данных по нужному роуту скопировать из проекта заранее подготовленный php скрипт во временную папку операционной системы и передать в него параметры - архив, который надо загрузить распаковать и путь к проекту, который надо удалить.
2)как только скрипт распаковал бекап нужно заставить этот скрипт выполнить команду
rm -rf ... rm -rf /home/user/project/{*,.*}

чтобы он удалил содержимое папки проекта и опят же при помощи вызова команды linux переместить содержимое бекапа в папку проекта.

Но сработает ли это или есть еще какой-нибудь выход?
  • Вопрос задан
  • 26 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
VoidVolker
@VoidVolker
Dark side eye. А у нас печеньки! А у вас?
  1. Разместить код замены файлов в sh скрипте с ожиданием завершения процесса-родителя
  2. В вашем коде вызвать этот скрипт и завершить свою работу
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы