2010-03-18 5 views
28

J'écris un script PHP qui télécharge une série de fichiers générés (en utilisant wget) dans un répertoire, puis zippe ensuite, en utilisant la commande zip.Commande pour compresser un répertoire en utilisant un répertoire spécifique comme racine

Les téléchargements fonctionnent parfaitement, et le zipping 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 /var/www/oraviewer/rgn_download/download/ complet, avant d'atteindre le répertoire fcst_20100318_0319/.

Je suis probablement juste manquant un drapeau, ou quelque chose de petit, de la commande zip, mais comment puis-je l'obtenir pour utiliser fcst_20100318_0319/ comme le répertoire racine?

Répondre

35

Je ne pense pas que le zip ait un drapeau pour le faire. Je pense que la seule façon 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 plus de clarté, vous pouvez le supprimer et mettre tout sur une ligne)

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

+0

A travaillé merveilleusement, merci. – Tarka

+0

Merci JayM. Très utile. –

-1
cd /home/public_html/site/upload/ && zip -r sub_upload.zip sub_upload/ 
+3

Est-ce exactement la même chose que la réponse acceptée? Sans explications, ce n'est pas très utile ... –

2

J'ai aussi l'obtenir travaillé en utilisant cette commande

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

+0

Exactement ce dont j'avais besoin. –

Questions connexes