带有部分 J 标志的拉链

带有部分 J 标志的拉链

我在跑:

zip -r /var/www/html/example.com/temp/test.zip /var/www/html/example.com/files_to_zip/

它有效,但给了我完整的目录结构/var。我看到了-j删除这些目录的标志,但它也删除了files_to_zip.有没有办法从files_to_zip目录递归构建我的 zip?

我正在跑步Amazon Linux 2,我zip正在使用Zip 3.0.

因此,前面描述的行为可以通过以下方式进行演示:

exec('zip -r ' . $temp_dir . 'test.zip ' . $zip_dir . '/');
exec('zip -rj ' . $temp_dir . 'test.zip ' . $zip_dir . '/');

我已经根据提供的重复和答案修改了我的代码:

exec('(cd ' . $zip_dir . '; zip -r ' . $temp_dir . 'test.zip ' . $zip_dir . '/)'); 
exec('cd ' . $zip_dir . '; zip -r ' . $temp_dir . 'test.zip ' . $zip_dir . '/');

https://stackoverflow.com/a/1679060/3783243我也尝试过:

exec('(cd ' . $zip_dir . ' && zip -r ' . $temp_dir . 'test.zip ' . $zip_dir . '/)');
exec('cd ' . $zip_dir . ' && zip -r ' . $temp_dir . 'test.zip ' . $zip_dir . '/');

我也尝试过 PHP 解决方案:

chdir($zip_dir);
exec('pwd', $result);
die(print_r($result));

返回了 的结果$zip_dir

行为是相同的,我的 zip 具有来自 的完整路径/var。每次执行代码后,zip 大小都会增加 1 个字节。

答案1

考虑这样的事情:

(cd /var/www/html/example.com; zip -r /var/www/html/example.com/temp/test.zip files_to_zip)

相关内容