나는 뛰고있어:
zip -r /var/www/html/example.com/temp/test.zip /var/www/html/example.com/files_to_zip/
작동하지만 완전한 디렉토리 구조를 제공합니다 /var
. -j
이 디렉토리를 삭제하라는 표시가 보이지만 디렉토리도 삭제됩니다. 디렉토리에서 내 zip을 재귀적으로 빌드할 수 있는 files_to_zip
방법이 있습니까 ?files_to_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)