Возможны ли жесткие ссылки в zip-архиве? - PullRequest
4 голосов
/ 14 января 2012

Я создаю zip-архив, содержащий два одинаковых файла по разным путям. Поддерживает ли формат архива zip что-то похожее на концепцию жестких ссылок Unix? Под этим я подразумеваю возможность сохранять файл только один раз (экономя место), но индексировать этот блок данных по двум различным путям в zip-архиве.

Если формат файла поддерживает это, как я могу создать такой архив с помощью бесплатных инструментов в Ubuntu?

Ответы [ 3 ]

8 голосов
/ 14 января 2012

Как сказал @Greg, ZIP не поддерживает жесткие ссылки.

Но если я правильно понял, ваша цель - уменьшить размер сжатого архива. Итак, давайте подумаем об альтернативном решении.

Позволяет запускать простые тесты для проверки степени сжатия различных архивных библиотек. Я создал два одинаковых двоичных файла и сжал их с помощью ZIP, BZ2, RAR и 7z.

  8641969  test.bin
  8641969  test2.bin

Первый раз был сжат только один файл. Второй раз были сжаты два файла:

ZIP :

$zip -9 test1.zip test.bin
$zip -9 test2.zip test.bin test2.bin

 8636837  test1.zip
17273654  test2.zip 

BZIP2

$export BZIP=--fast
$tar cjf test1.tbz test.bin 
$tar cjf test2.tbz test.bin test2.bin 

 8694997  test1.tbz
17389167  test2.tbz

7z

$7z a -mx=9 test1.7z test.bin 
$7z a -mx=9 test2.7z test.bin test2.bin 

 8705285  test1.7z
 8707054  test2.7z

RAR

$rar a -m5 test1.rar test.bin
$rar a -m5 test2.rar test.bin test2.bin 

 8649970  test1.rar
17299916  test2.rar

Заключение : Кажется, что только 7z делает работу хорошо. Попробуйте использовать его в своем приложении.

Конечно, вам нужно будет провести больше тестов в вашей среде с вашими файлами, чтобы увидеть, действительно ли это то, что вам нужно. Также вы можете поиграть с опциями, чтобы увидеть, на каком уровне сжатия вы получаете лучший коэффициент сжатия / баланс скорости.

7 голосов
/ 14 января 2012

Нет, формат Zip не поддерживает это.Это связано с тем, что локальный заголовок файла содержит информацию о файле, включая его имя, за которым сразу следуют сжатые данные для файла.Два разных локальных заголовка файла не могут указывать на одни и те же сжатые данные.

3 голосов
/ 29 июля 2012

архивы tar поддерживают жесткие ссылки

...