Команда для zip каталога с использованием определенного каталога в качестве корня
Я пишу PHP script, который загружает серию сгенерированных файлов (с помощью wget
) в каталог, а затем затыкает их затем, используя команду zip
.
Загрузка работает отлично, и в основном работает zipping. Я запустил команду:
zip -r /var/www/oraviewer/rgn_download/download/fcst_20100318_0319.zip /var/www/oraviewer/rgn_download/download/fcst_20100318_0319
который дает zip файл со всеми загруженными файлами, но он содержит полные каталоги /var/www/oraviewer/rgn_download/download/
, прежде чем попасть в каталог fcst_20100318_0319/
.
Я, вероятно, просто пропускаю флаг или что-то маленькое из команды zip, но как мне заставить его использовать fcst_20100318_0319/
в качестве корневого каталога?
Ответы
Ответ 1
Я не думаю, что у zip есть флаг для этого. Я думаю, что единственный способ - это что-то вроде:
cd /var/www/oraviewer/rgn_download/download/ && \
zip -r fcst_20100318_0319.zip fcst_20100318_0319
(Обратная косая черта просто для ясности, вы можете удалить ее и поместить все на одну строку.)
Так как PHP выполняет команду в подоболочке, она не изменит ваш текущий каталог.
Ответ 2
Я также заработал, используя эту команду
exec ('cd'. $_ SERVER ['DOCUMENT_ROOT']. '& & zip -r com.zip "./" ');
Ответ 3
cd /home/public_html/site/upload/ && zip -r sub_upload.zip sub_upload/