2010-03-18 11 views
28

Ich schreibe ein PHP-Skript, das eine Reihe von generierten Dateien (mit wget) in ein Verzeichnis herunterlädt, und dann Reißverschlüsse dann mit dem zip Befehl.Befehl zum Zip ein Verzeichnis mit einem bestimmten Verzeichnis als Root

Die Downloads funktionieren einwandfrei, und das Zippen funktioniert meistens. Ich betreibe den Befehl:

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

, die eine Zip-Datei mit allen heruntergeladenen Dateien liefert, aber es enthält die vollständige /var/www/oraviewer/rgn_download/download/ Verzeichnisse, bevor Sie das fcst_20100318_0319/ Verzeichnis zu erreichen.

Ich vermisse wahrscheinlich nur eine Flagge, oder etwas kleines, von der Zip-Befehl, aber wie bekomme ich es fcst_20100318_0319/ als Root-Verzeichnis zu verwenden?

Antwort

35

Ich glaube nicht, dass zip eine Flagge hat, das zu tun. Ich denke, der einzige Weg ist, so etwas wie:

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

(. Der Backslash ist nur aus Gründen der Klarheit, können Sie es entfernen und alles setzen auf eine Zeile)

Da PHP den Befehl in einer Subshell ausgeführt wird, Es wird Ihr aktuelles Verzeichnis nicht ändern.

+0

Arbeitete wunderbar, danke. – Tarka

+0

Danke JayM. Sehr hilfreich. –

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

Ist das genau das Gleiche wie die angenommene Antwort? Ohne Erklärungen ist es nicht sehr nützlich ... –

2

Ich habe es auch mit diesem Befehl

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

+0

Genau das, was ich brauchte. –

Verwandte Themen