У меня есть машина с 90% использования жесткого диска. Я хочу сжать более 500 файлов журнала в новый файл меньшего размера. Однако жесткий диск слишком мал, чтобы хранить как исходные, так и сжатые файлы.
Поэтому мне нужно сжать все файлы журнала в один новый файл один за другим, удаляя каждый оригинал после сжатия.
Как я могу сделать это в Linux?
Ответы:
gzip
илиbzip2
сожмет файл и автоматически удалит несжатый (это их поведение по умолчанию).Однако имейте в виду, что в процессе сжатия оба файла будут существовать.
Если вы хотите сжать файлы журнала (т.е. файлы, содержащие текст), вы можете предпочесть
bzip2
, так как он имеет лучшее соотношение для текстовых файлов.Сравнение и примеры:
UPDATE, как @Jjoao сказал мне в комментарии, интересно,
xz
кажется, имеет лучшее соотношение для простых файлов с параметрами по умолчанию:Для получения дополнительной информации, вот интересный тест для различных инструментов: http://binfalse.de/2011/04/04/comparison-of-compression/
В приведенном выше примере я использую
-9
наилучшую степень сжатия, но если время, необходимое для сжатия данных, важнее, чем соотношение, лучше его не использовать (используйте более низкую опцию, т. Е.-1
Или что-то среднее).источник
xz myfile
?xz
, но сейчас подумаю. Смотрите обновление моего поста.xz -9
. Это значительно увеличивает объем памяти, необходимый для сжатия / распаковки, без существенного улучшения степени сжатия. На man-странице даже сказано (выделение их): «В частности, не стоит слепо использовать -9 для всего, как это часто бывает с gzip (1) и bzip2 (1)». Значение по умолчаниюxz -6
достаточно хорошее и дажеxz -0
/xz -1
обычно сжимает лучше, чемgzip -9
.-9
, но я использовал это здесь, так как я хотел сделать некоторый эталон для степени сжатия "в том же масштабе". Но опять же, вы абсолютно правы: это плохая идея, чтобы слепо использовать-9
.Я сам нашел решение для дегтя.
Он удаляет один файл после сжатия его в целевой файл.
Однако скорость сжатия не совсем высокая. Команда выглядит так:
источник
В дополнение к @apaul, я подчеркиваю, что сжатие файлов индивидуально
(замените bzip2 на gzip, xz или какой-либо другой ваш любимый файл zip) может быть важно:
Таким образом, вы по-прежнему можете видеть (
bzcat file.bz2
), искать (bzgrep file.bz2
), редактировать (vi file.bz2
) сжатый файл и удалять старые, когда это необходимо.источник
Я пытался сделать это на BSD-версии tar. В этом случае опция --remove-files недоступна. В итоге я сделал (и работал):
источник