LINUX.ORG.RU

Zip 2 Bzip2

 ,


1

1

Всем доброго времени! Использую php-скрипт, который упаковывает файлы в zip-архив без сжатия. Tar использовать не получилось по ряду непреодолимых препятствий, над которыми бьюсь уже вторую неделю. В общем, получилось только zip. Но его степень сжатия меня не устраивает, поэтому решил поставить её вообще в ноль, чтобы потом сжимать другими утилитами. В результате хочу использовать что-то вроде

echo "asdfafsdasdf" | php myscript.php | bzip2 ... > file.zip.bz2

В этом конвейере «php myscript.php» как раз и возвращает zip-архив, выполняя ещё операции объединения STDIN с нужными мне данными.

И всё бы хорошо, но в результирующем архиве file.bz2 лежит один файл архива zip, а не его непосредственное содержимое (а мне хотелось бы именно так) как в случае использования tar. То есть получили архив в архиве. Можно ли как-то в результирующем архиве получить именно содержимое zip-архива, а не сам zip-файл?

Ответ на: комментарий от anonymous

Нет, там один TAR. gzip, bzip2, xz, compress, …, тысячи их — всегда сжимают один файл. При этом неправильно говорить, что этот файл в каком-то архиве. Tar — архиватор, bzip2 — компрессор.

Так ведь если выполнить ту команду, которую я описал

tar cf - plummet.png test.php | bzip2 -6 -c - > ../archive.tar.bz2
, то в содержимом bz2-архива будут сразу эти два файла (png и php), а не один tar-архив (я проверял). Я понимаю, что архиватор и компрессор это разное. Но меня интересует конечный результат - сжатый архив. И чтобы в нём было несколько файлов. У меня есть zip. И мне с ним надо что-то сделать, чтобы получить bz2, xz или что-то ещё с более хорошим сжатием, чем zip. И очень бы хотелось не распаковывать его потом два раза (один раз наружный bz2, потом внутренний zip), чтобы получить файлы.

Novascriptum
() автор топика
Ответ на: комментарий от Novascriptum

то в содержимом bz2-архива будут сразу эти два файла (png и php), а не один tar-архив (я проверял).

Не будут, ты неправильно проверял. Проверял командой tar поди?

anonymous
()
Ответ на: комментарий от Novascriptum

то в содержимом bz2-архива будут сразу эти два файла (png и php)

Нет, не будут. И вообще не бывает bz2-архивов. bz2 не архиватор, а компрессор. Он просто жмёт один файл и всё. Архиватор тут tar. bz2 жмёт один файл tar. Он является tar-архивом. И в нём сразу эти два файла.

И bz2 и xz жмут один файл. Если тебе нужен архив, для этого существует tar. Используй tar.xz (xz жмёт сильнее и быстрее, чем bz2, кстати).

Если очень хочется комбайн, как .zip — и архиватор и компрессор два в одном, но с большей степенью сжатия, есть 7z.

Psych218 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.