使用特定目录作为根目录来压缩目录的命令
我正在编写一个 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/
作为根目录?
I'm writing a PHP script that downloads a series of generated files (using wget
) into a directory, and then zips then up, using the zip
command.
The downloads work perfectly, and the zipping mostly works. I run the command:
zip -r /var/www/oraviewer/rgn_download/download/fcst_20100318_0319.zip /var/www/oraviewer/rgn_download/download/fcst_20100318_0319
which yields a zip file with all the downloaded files, but it contains the full /var/www/oraviewer/rgn_download/download/
directories, before reaching the fcst_20100318_0319/
directory.
I'm probably just missing a flag, or something small, from the zip command, but how do I get it to use fcst_20100318_0319/
as the root directory?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我不认为 zip 有一个标志可以做到这一点。我认为唯一的方法是这样的:(
反斜杠只是为了清楚起见,您可以将其删除并将所有内容放在一行上。)
由于 PHP 在子 shell 中执行命令,因此它不会更改您当前的目录。
I don't think zip has a flag to do that. I think the only way is something like:
(The backslash is just for clarity, you can remove it and put everything on one line.)
Since PHP is executing the command in a subshell, it won't change your current directory.
使其正常工作
我还通过使用此命令exec('cd '.$_SERVER['DOCUMENT_ROOT'].' && zip -r com.zip "./"');
I have also get it worked by using this command
exec('cd '.$_SERVER['DOCUMENT_ROOT'].' && zip -r com.zip "./"');
在 zip 命令中使用 -j 或 --junk-paths 选项。
从 zip 手册页:
Use the -j or --junk-paths option in your zip command.
From the zip man page: