Вопрос или проблема
Версия ОС:
root@triiage_1:~/zip# cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.4 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.4 LTS"
VERSION_ID="18.04"
Версия zip:
root@triiage_1:~# zip --version
Copyright (c) 1990-2008 Info-ZIP - введите 'zip "-L"' для лицензии на программное обеспечение.
Это Zip 3.0 (5 июля 2008), разработанный Info-ZIP.
В настоящее время поддерживается E. Gordon. Пожалуйста, отправьте отчеты об ошибках
авторам, используя веб-страницу на www.info-zip.org; см. README для подробностей.
Последние исходные коды и исполняемые файлы находятся по адресу ftp://ftp.info-zip.org/pub/infozip,
на указанную дату; см. http://www.info-zip.org/ для других сайтах.
Скомпилировано с помощью gcc 6.3.0 20170415 для Unix (Linux ELF).
У меня есть 2 файла cpio
root@triiage_1:~/zip# ll -h;file *
total 111M
drwxr-xr-x 2 root root 4.0K Feb 28 09:12 ./
drwx------ 15 root root 12K Feb 28 09:12 ../
-rw-r--r-- 1 root root 56M Feb 28 09:09 kernel1.cpio
-rw-r--r-- 1 root root 56M Feb 28 09:09 kernel2.cpio
kernel1.cpio: ASCII cpio archive (SVR4 без CRC)
kernel2.cpio: ASCII cpio archive (SVR4 без CRC)
Я сжимаю их с помощью zip и делю zip-файл на части по 15 МБ для каждого.
root@triiage_1:~/zip# zip xk.zip -s 15m kernel1.cpio kernel2.cpio
добавление: kernel1.cpio (сжатие 1%)
добавление: kernel2.cpio (сжатие 1%)
root@triiage_1:~/zip# ll -h
total 220M
drwxr-xr-x 2 root root 4.0K Feb 28 09:23 ./
drwx------ 15 root root 12K Feb 28 09:12 ../
-rw-r--r-- 1 root root 56M Feb 28 09:09 kernel1.cpio
-rw-r--r-- 1 root root 56M Feb 28 09:09 kernel2.cpio
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z01
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z02
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z03
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z04
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z05
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z06
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z07
-rw-r--r-- 1 root root 4.5M Feb 28 09:23 xk.zip
root@triiage_1:~/zip# file *
kernel1.cpio: ASCII cpio archive (SVR4 без CRC)
kernel2.cpio: ASCII cpio archive (SVR4 без CRC)
xk.z01: Zip многотомный архив, требуется как минимум PKZIP v2.50 для извлечения
xk.z02: данные
xk.z03: данные
xk.z04: данные
xk.z05: данные
xk.z06: данные
xk.z07: данные
xk.zip: данные
Удалите оригиналы kernel1.cpio kernel2.cpio
root@triiage_1:~/zip# rm kernel1.cpio kernel2.cpio
root@triiage_1:~/zip# ll -h
total 110M
drwxr-xr-x 2 root root 4.0K Feb 28 09:23 ./
drwx------ 15 root root 12K Feb 28 09:12 ../
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z01
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z02
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z03
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z04
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z05
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z06
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z07
-rw-r--r-- 1 root root 4.5M Feb 28 09:23 xk.zip
Распакуйте xk.zip с помощью “7z e xk.zip”, успешно.
root@triiage_1:~/zip# 7z e xk.zip
7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Версия 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 разрядов,4 ЦП Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz (406E3),ASM,AES-NI)
Сканирование диска на наличие архивов:
1 файл, 4718352 байт (4608 КиБ)
Извлечение архива: xk.zip
--
Путь = xk.zip
Тип = zip
Физический размер = 4718352
Размер встроенного заглушки = 4
Общий физический размер = 114818832
Многотомный = +
Индекс тома = 7
Томов = 8
Все в порядке
Файлы: 2
Размер: 115745324
Сжатый: 114818832
root@triiage_1:~/zip# ll -h
total 220M
drwxr-xr-x 2 root root 4.0K Feb 28 09:24 ./
drwx------ 15 root root 12K Feb 28 09:12 ../
-rw-r--r-- 1 root root 56M Feb 28 09:09 kernel1.cpio
-rw-r--r-- 1 root root 56M Feb 28 09:09 kernel2.cpio
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z01
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z02
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z03
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z04
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z05
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z06
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z07
-rw-r--r-- 1 root root 4.5M Feb 28 09:23 xk.zip
Снова удалите kernel1.cpio kernel2.cpio.
root@triiage_1:~/zip# ll -h
total 110M
drwxr-xr-x 2 root root 4.0K Feb 28 09:37 ./
drwx------ 15 root root 12K Feb 28 09:28 ../
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z01
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z02
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z03
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z04
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z05
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z06
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z07
-rw-r--r-- 1 root root 4.5M Feb 28 09:23 xk.zip
Попробуйте объединить разделенные zip-файлы xk.zip xk.z01~z07 в один yk.zip, затем распаковать его, встретив ошибки.
root@triiage_1:~/zip# zip -s0 xk.zip -O yk.zip
копирование: kernel1.cpio
копирование: kernel2.cpio
root@triiage_1:~/zip# ll -h
total 160M
drwxr-xr-x 2 root root 4.0K Feb 28 09:47 ./
drwx------ 15 root root 12K Feb 28 09:28 ../
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z01
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z02
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z03
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z04
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z05
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z06
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z07
-rw-r--r-- 1 root root 4.5M Feb 28 09:23 xk.zip
-rw-r--r-- 1 root root 51M Feb 28 09:47 yk.zip
root@triiage_1:~/zip# unzip yk.zip
Архив: yk.zip
распаковка: kernel1.cpio
ошибка: неверные сжатые данные для распаковки
распаковка: kernel2.cpio
ошибка: неверные сжатые данные для распаковки
root@triiage_1:~/zip# ll -h
total 211M
drwxr-xr-x 2 root root 4.0K Feb 28 09:47 ./
drwx------ 15 root root 12K Feb 28 09:28 ../
-rw-r--r-- 1 root root 31M Feb 28 09:09 kernel1.cpio
-rw-r--r-- 1 root root 21M Feb 28 09:09 kernel2.cpio
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z01
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z02
-rw-r--r-- 1 root root 15M Feb 28 09:22 xk.z03
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z04
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z05
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z06
-rw-r--r-- 1 root root 15M Feb 28 09:23 xk.z07
-rw-r--r-- 1 root root 4.5M Feb 28 09:23 xk.zip
-rw-r--r-- 1 root root 51M Feb 28 09:47 yk.zip
Вот мои переживания.
а. размер kernel1.cpio изменился с 56M на 31M, кажется, что-то потеряно.
б. размер kernel2.cpio изменился с 56M на 21M, кажется, что-то потеряно.
в. общий размер разделенных zip-файлов xk.zip xk.z01~z07 составляет около 110M, почему объединенный zip-файл yk.zip всего 51 МБ?
Я не прав?
Из личного опыта, 7z не обрабатывает многослойные zip-архивы в некоторых случаях.
unzip не поддерживает многочастотные архивы. zip 3.0 может объединять многослойные архивы.
Поэтому сначала сделайте однокомпонентный архив из многослойных архивов с помощью zip 3.0 следующим образом:
$ zip -s- xk.zip -O xk_full.zip
используя знак
-
после параметра командной строки-s
без пробела объединяет все многослойные архивы вместе и записывает их в виде единого zip-файла, имя которого задается опцией-O
.
-s
опция предназначена для разбиения на несколько файлов, но если указанный размер равен0
или отрицательному (в нашем случае-
), тогда вместо разбиения объедините многослойные архивы.
Затем используйте unzip для распаковки созданного однокомпонентного архива.
$ unzip xk_full.zip
Для вашего сведения, из руководства по unzip:
Многослойные архивы еще не поддерживаются, за исключением использования с zip. (Все части должны быть объединены вместе в порядке, а затем zip -F (для zip 2.x) или zip -FF (для zip 3.x) должны быть выполнены на объединенном архиве, чтобы “исправить” его. Также zip 3.0 и более поздние версии могут объединять многослойные (разделенные) архивы в объединенный однокомпонентный архив, используя zip -s- вarchive -O outarchive. См. страницу руководства zip 3 для получения дополнительной информации.)
Ответ или решение
Решение проблемы с ошибками при разархивировании разделенных zip-файлов на Ubuntu 18.04.4 LTS
Введение
Часто, когда мы сталкиваемся с проблемами при работе с архивами, важно учитывать многие аспекты, начиная от версии программного обеспечения и заканчивая основными характеристиками создаваемых файлов. В данной статье мы подробно разберем, в чем может быть причина ошибок при попытке разархивирования разделенных zip-файлов, а также предложим эффективные способы решения проблемы.
Описание проблемы
Согласно предоставленной информации, вы создавали разделенные zip-файлы с помощью команды zip
, а затем пытались объединить их в один файл и разархивировать, но столкнулись с ошибками. Основные моменты, которые вы отметили:
- Изменение размера архивируемых файлов: Размер
kernel1.cpio
уменьшился с 56 МБ до 31 МБ, аkernel2.cpio
— с 56 МБ до 21 МБ. - Некорректный размер созданного объединенного zip-файла: Общий размер разделенных zip-файлов составлял 110 МБ, тогда как объединенный файл
yk.zip
оказался всего 51 МБ.
Анализ причин проблемы
-
Объединение многотомных архивов: Используемая вами команда
zip -s 0 xk.zip -O yk.zip
не всегда корректно обрабатывает многотомные архивы. Хотя этот подход может сработать в некоторых случаях, он не гарантирует корректность конечного архива, особенно когда вы работаете со старыми версиямиzip
. -
Выбор инструмента для разархивирования: Вы отметили, что используете
7z
для разархивирования. Однако,7z
иногда не справляется с многотомными zip-архивами. Наилучшей практикой является использование лучше интегрированных инструментов, таких какunzip
или даже обновленныйzip
. -
Правильное объединение архивов: Основной момент, который следует учесть — использование команды
zip
для объединения многотомных архивов. В вашем случае необходимо использовать команду с конкретным синтаксисом для корректного объединения частей.
Решение проблемы
Для решения возникшей ситуации выполните следующие шаги:
-
Объединение файлов: Для правильного объединения ваших разделенных архивов используйте команду:
zip -s - xk.zip -O xk_full.zip
Здесь
-
после-s
указывает на то, что необходимо объединить все части архивов в один файл. -
Разархивирование объединенного файла: После успешного объединения воспользуйтесь командой
unzip
для извлечения содержимого:unzip xk_full.zip
-
Проверка целостности файлов: После завершения разархивирования вы можете проверить размеры восстановленных файлов, чтобы убедиться в их целостности и отсутствии потерь данных.
Заключение
Используя указанные методы, вы сможете успешно объединить и разархивировать ваши файлы. Обратите внимание на использование актуальных версий программного обеспечения и следуйте предписанным практикам, чтобы минимизировать возникновение ошибок в будущем. В случае дальнейших проблем стоит обратиться к документации или сообществу разработчиков, чтобы получить более конкретные рекомендации.
Если у вас есть дополнительные вопросы или требуется дальнейшая помощь, не стесняйтесь обращаться за поддержкой.