У меня раздражающая проблема с программами zip
и zipnote
(обе в версии 3.0) на моей стабильной платформе Debian.
Я хочу создать zip-архив, хранящий (не сжимая) данные из стандартныхвход без дополнительных атрибутов / полей и присвоения имени результирующему файлу внутри zip-файла.
Моя первая попытка была
printf "foodata" | zip -X0 bar.zip -
printf "@ -\n@=foofile\n" | zipnote -w bar.zip
, где zip
создать архив bar.zip
с сохраненным файлом "-"
, содержащим "foodata"
, и zipnote
переименуйте файл с "-"
на "foofile"
.
Первая проблема (решена): zip
, как мы видим изzipdetails
001E Filename '-'
001F Extra ID #0001 0001 'ZIP64'
0021 Length 0010
0023 Uncompressed Size 0000000000000007
002B Compressed Size 0000000000000007
получая данные из стандартного ввода, не знает размер результирующего файла, поэтому создайте PKZIP 4.5-совместимый архив zip
(который может превышать 4 ГБ), используя расширение Zip64
и добавление в файл дополнительного атрибута Zip64
.
А опция -X
удаляет атрибуты extrafile , но не удаляет дополнительное поле Zip64
.
Эта проблема легко решается добавлением опции -fz-
, как указано в zip
man page
// .................................VVVV
printf "foodata" | zip -X0 -fz- bar.zip -
Теперь bar.zip
- это файл, совместимый с PKZIP 2, и нет дополнительного поля Zip64
.
Вторая проблема (не решена): zipnote
измените имя файла и добавьте в файл поле Zip64
.
Я не знаю почему.
По словам zip
manpage
zip
удаляет расширения Zip64, если они не нужны при копировании архивных записей (см. параметр -U
(--copy
)).
Итак, японимаю, что
zip bar.zip --out bar-corrected.zip
должен создать новый bar-corrected.zip
архив, в котором расширение foofile is
Zip64 free (the
foofile is very short so the
Zip64`, я полагаю, не требуется).
К сожалению, это не работает: я получаю предупреждение
copying: foofile
zip warning: Local Version Needed To Extract does not match CD: foofile
, и полученный файл поддерживает расширение Zip64
.
И кажется, что не работает объяснение имени файла илидобавив опцию -fz-
: я перепробовал много комбинаций, но (возможно, это моя вина) безуспешно.
Вопросы:
(1) можно ли избежать (икак) что zipnote
, меняя имя файла, добавляет в него поля Zip64
?
(2) в противном случае, как я могу использовать zip
(с --copy
? С -fz-
?), Чтобы создать новое расширение zip
archive Zip64
free?