web-dev-qa-db-ja.com

特定のディレクトリをルートとして使用してディレクトリを圧縮するコマンド

wgetを使用して)生成された一連のファイルをディレクトリにダウンロードし、次にZipコマンドを使用してzip圧縮するPHPスクリプトを作成しています。

ダウンロードは完全に機能し、圧縮はほとんど機能します。私はコマンドを実行します:

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/をルートディレクトリとして使用するにはどうすればよいですか?

35
Tarka

Zipにはそのためのフラグはないと思います。私は唯一の方法は次のようなものだと思います:

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

(バックスラッシュはわかりやすくするためのものです。バックスラッシュを削除して、すべてを1行に入れることができます。)

PHPはサブシェルでコマンドを実行しているため、現在のディレクトリは変更されません。

41
JayM

このコマンドを使用して動作させることもできます

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

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