web-dev-qa-db-fra.com

Commande pour compresser un répertoire en utilisant un répertoire spécifique comme racine

J'écris un script PHP qui télécharge une série de fichiers générés (à l'aide de wget) dans un répertoire, puis zippe puis, à l'aide de la commande Zip.

Les téléchargements fonctionnent parfaitement et la compression fonctionne principalement. Je lance la commande:

Zip -r /var/www/oraviewer/rgn_download/download/fcst_20100318_0319.Zip /var/www/oraviewer/rgn_download/download/fcst_20100318_0319

qui donne un fichier Zip avec tous les fichiers téléchargés, mais il contient les répertoires complets /var/www/oraviewer/rgn_download/download/, avant d’atteindre le répertoire fcst_20100318_0319/.

Il me manque probablement juste un indicateur, ou quelque chose de petit, dans la commande Zip, mais comment l'obtenir pour qu'il utilise fcst_20100318_0319/ comme répertoire racine?

32
Tarka

Je ne pense pas que Zip ait un drapeau pour le faire. Je pense que le seul moyen est quelque chose comme:

cd /var/www/oraviewer/rgn_download/download/ && \
   Zip -r fcst_20100318_0319.Zip fcst_20100318_0319

(La barre oblique inverse est juste pour la clarté, vous pouvez l'enlever et tout mettre sur une ligne.)

Puisque PHP exécute la commande dans un sous-shell, cela ne changera pas votre répertoire actuel.

40
JayM

J'ai aussi le faire fonctionner en utilisant cette commande

exec ('cd'. $ _ SERVER ['DOCUMENT_ROOT']. '&& Zip -r com.Zip "./"');

2
vivek barsaiyan
cd /home/public_html/site/upload/ && Zip -r sub_upload.Zip sub_upload/
0
Bassam Essa