Может ли `7z` сжимать только обновленный раздел файла вместо сжатия полностью обновленного файла? - PullRequest
0 голосов
/ 20 мая 2018

Сначала я создал файл объемом 1 ГБ и перенес в папку /target, затем сжал файл с помощью 7z a targer.7z target.

Позже я добавляю строку hello в конец файла объемом 1 ГБ.Когда я повторно сжал папку /target, используя опцию обновления 7z u target.7z target;Я заметил, что обновленный файл снова сжимается, а не только его обновленный раздел.

[Q] Как заставить 7z сжимать только обновленный раздел файла вместо сжатия полностью обновленного файла?Есть ли альтернативные методы сжатия для достижения этой цели?

Пример:

$ mkdir target
$ fallocate -l 1G target/temp_1GB_file
$ time 7z a target.7z target
7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8 CPUs)    
Scanning    
Updating archive target.7z    
Compressing  target/temp_1GB_file
Compressing  target/target.7z    
Everything is Ok

real    0m23.054s
user    0m30.316s
sys 0m1.047s

$ echo 'hello' >> target/temp_1GB_file
$ time 7z u target.7z target # Here complete file has been compressed all over again.
7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,8 CPUs)    
Scanning   
Updating archive target.7z    
Compressing  target/temp_1GB_file    
Everything is Ok    

real    0m23.861s
user    0m30.781s
sys 0m1.192s

Здесь, как вы можете видеть, я добавил файл со строкой 'hello', а не сжимал расположенную hello'sблокировка файла и объединение с уже сжатым файлом объемом 1 ГБ, полный файл повторно сжат.

1 Ответ

0 голосов
/ 21 мая 2018

7z не предназначен для этого.

Вы можете посмотреть код gzlog.h и gzlog.c для примера добавления коротких сообщений.эффективно в сжатый файл.

...