我在跑:
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)