Я пытаюсь извлечь .tar.gz, который сжимаю в конвейере с помощью bash.Конвейер выбирает файлы, которые должны быть упакованы в обновление, используя rsync
, а затем сжимает их с помощью tar
:
rsync -azp --files-from=${RSYNC_UPDATE_FILE} --ignore-missing-args src update
tar czf ${UFILE} update
Файлы выглядят правильно, когда я открываю .tar.gz с помощью программы, подобной WinRar.,Затем я извлекаю обновление, используя PHP в приложении.
# Get the full path where it should be extracted
$dirpath = $dirpath ?: File::dirname($zippath);
$phar = new \PharData($zippath);
# Check if it's compressed: e.g. tar.gz => tar
$zip = $phar->isCompressed() ? $phar->decompress() : $phar;
try {
# Extract it to the new dir
$extracted = $zip->extractTo($dirpath);
} catch (\Exception $e ) {
throw new CorruptedZip("Unable to open the archive.",424,$e);
}
Извлеченные файлы имеют необходимые разрешения, структуру dir и т. Д., Но я думаю, они все еще сжаты.Все файлы содержат много групп строк, а не код PHP.
02a0 048b 2235 bca8 ad5e 4f7e d9be ed1f
5b00 24d5 9248 8994 2c75 f778 e293 74db
6401 a802 0af5 55e1 52fc fb37 80ff f99f
Кто-нибудь может увидеть, где я пропускаю шаг?