Как безопасно увеличить gzipped файл?

Мог также быть сделан в простой (портативной/совместимой) оболочке Bourne во множестве путей со стандартными инструментами намного менее изящными способами, чем использование усовершенствованной оболочки globbing или команд с созданными в исключении опциями.

Если нет слишком многих файлов (и не с именами включая пробелы и/или разрывы строки), это могло быть путем:

cp `ls | egrep -v '^excludename$'` destdir/.

Конечно, bash и инструменты GNU являются большими и мощными, но они все еще не всегда доступны. Если бы Вы намереваетесь поместить его в портативный сценарий, я рекомендовал бы find как в комментарии Rush.

0
22.02.2013, 16:10
1 ответ

Из страницы справочника:

CAVEATS

 When writing compressed data to a tape, it is generally
 necessary to pad the output with zeroes up to a block
 boundary. When the data is read and the whole block is
 passed to gun‐ zip for decompression, gunzip detects that
 there is extra trailing garbage after the compressed data
 and emits a warning by default. You have to use the
 --quiet option to suppress the warning.

Таким образом, казалось бы, что Вы в безопасности.

Отметьте, хотя тот Ваш код не работает, поскольку необходимо было бы передать conv=notrunc на втором dd вызов.

С другой стороны, можно сделать:

dd bs=4000 seek=1 count=0 of=file.gz

или

truncate  -s 4000 file.gz

Для создания этого 4 000 байтов шириной (на самом деле не пишущий нули просто сделайте это редким).

3
28.01.2020, 02:28
  • 1
    редкий файл имеет блоки нулей, и если файл почти 4 кибибита длиной, нет пространства для блоков в конце. –  vonbrand 22.02.2013, 23:23

Теги

Похожие вопросы