Версия ОС:
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 - Type 'zip "-L"' for software license.
This is Zip 3.0 (July 5th 2008), by Info-ZIP.
Currently maintained by E. Gordon. Please send bug reports to
the authors using the web page at www.info-zip.org; see README for details.
Latest sources and executables are at ftp://ftp.info-zip.org/pub/infozip,
as of above date; see http://www.info-zip.org/ for other sites.
Compiled with gcc 6.3.0 20170415 for 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 with no CRC)
kernel2.cpio: ASCII cpio archive (SVR4 with no CRC)
Я сжимаю их с помощью zip и разделяю zip-файл, по 15 МБ на каждую часть файл.
root@triiage_1:~/zip# zip xk.zip -s 15m kernel1.cpio kernel2.cpio
adding: kernel1.cpio (deflated 1%)
adding: kernel2.cpio (deflated 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 with no CRC)
kernel2.cpio: ASCII cpio archive (SVR4 with no CRC)
xk.z01: Zip multi-volume archive data, at least PKZIP v2.50 to extract
xk.z02: data
xk.z03: data
xk.z04: data
xk.z05: data
xk.z06: data
xk.z07: data
xk.zip: data
Удалите оригинальный 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 Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz (406E3),ASM,AES-NI)
Scanning the drive for archives:
1 file, 4718352 bytes (4608 KiB)
Extracting archive: xk.zip
--
Path = xk.zip
Type = zip
Physical Size = 4718352
Embedded Stub Size = 4
Total Physical Size = 114818832
Multivolume = +
Volume Index = 7
Volumes = 8
Everything is Ok
Files: 2
Size: 115745324
Compressed: 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
copying: kernel1.cpio
copying: 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
Archive: yk.zip
inflating: kernel1.cpio
error: invalid compressed data to inflate
inflating: kernel2.cpio
error: invalid compressed data to inflate
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 составляет около 110 МБ, почему объединенный 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
К вашему сведению, из руководства по распаковке:
Архивы, состоящие из нескольких частей, пока не поддерживаются, кроме как в сочетании с zip. (Все части должны быть объединены вместе по порядку, а затем необходимо выполнить команду zip -F (для zip 2.x) или zip -FF (для zip 3.x) на объединенном архиве, чтобы «исправить» его. Также, zip 3.0 и более поздние версии могут объединять составные (разделенные) архивы в комбинированный однофайловый архив с помощью zip -s-inarchive -O outarchive.Дополнительную информацию см. на странице руководства zip 3.)