繁体   English   中英

命令 zip 以特定目录为根的目录

[英]Command to zip a directory using a specific directory as the root

我正在编写一个 PHP 脚本,它将一系列生成的文件(使用wget )下载到一个目录中,然后使用zip命令进行压缩。

下载工作完美,压缩大部分工作。 我运行命令:

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

它会生成一个包含所有下载文件的 zip 文件,但在到达fcst_20100318_0319/目录之前,它包含完整的/var/www/oraviewer/rgn_download/download/目录。

我可能只是从 zip 命令中丢失了一个标志或一些小东西,但是我如何让它使用fcst_20100318_0319/作为根目录?

我认为zip没有标志可以做到这一点。 我认为唯一的方法是:

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

(反斜杠只是为了清晰起见,您可以删除它并将所有内容放在一行上。)

由于PHP在子shell中执行命令,因此它不会更改当前目录。

我也使用此命令使其工作

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

在 zip 命令中使用 -j 或 --junk-paths 选项。

来自zip 手册页

-j

--垃圾路径

只存储已保存文件的名称(垃圾路径),不存储目录名称。 默认情况下,zip 将存储完整路径(相对于当前目录)。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM