Как я сжимаю оперативные файлы?

Я наконец нашел решение для этой проблемы. Эта страница показывает, как использовать xmodmap для переотображения кода клавиши на символ, и с тех пор showkey списки коды клавиши этих ключей, я могу просто сделать это:

xmodmap -e 'keycode 100=Alt_R'
xmodmap -e 'keycode 126=Super_R'
xmodmap -e 'keycode 127=Menu'

Проблема решила, но я все еще не понимаю то, что вызвало ее.

20
29.04.2015, 18:39
5 ответов

Я разобрал решение смолы самостоятельно.
Он удаляет один файл после сжатия в целевой файл.
Скорость сжимания не совсем быстро. Команда выглядит как:

tar -zcvf my_log.tar.gz *.log --remove-files
15
27.01.2020, 19:44

В дополнение к @apaul, я подчеркиваю, что сжимающие файлы индивидуально

 bzip2 *.log.*

(замените BZIP2 по GZIP, XZ, или что когда-либо ваш любимый файл ZIP) Может быть важно:

Таким образом, вы все еще можете увидеть ( bzcat file.bz2 ), поиск ( bzgrep file.bz2 ), редактировать ( vi file.bz2 ) Сжатый файл и удалите более старых, когда это необходимо.

1
27.01.2020, 19:44

GZIP или BZIP2 будет сжать файл и автоматически удалить не сжатый (это их поведение по умолчанию).

Однако имейте в виду, что в то время как процесс сжатия оба файла будут существовать.

Если вы хотите сжать файлы журнала (т. Е. Файлы, содержащие текст), вы можете предпочесть BZIP2 , поскольку он имеет лучшее соотношение для текстовых файлов.

bzip2 -9 myfile       # will produce myfile.bz2

Сравнение и примеры:

$ ls -l myfile
-rw-rw-r-- 1 apaul apaul 585999 29 april 10:09 myfile

$ bzip2 -9 myfile

$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 115780 29 april 10:09 myfile.bz2

$ bunzip2 myfile.bz2

$ gzip -9 myfile

$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 146234 29 april 10:09 myfile.gz

Обновление Как сказал мне @jjoao, в одном комментарии xz , кажется, имеет наилучшее соотношение на простых файлах со своими параметрами по умолчанию:

$ xz -9 myfile

$ ls -l myfile*
-rw-rw-r-- 1 apaul apaul 109384 29 april 10:09 myfile.xz

для Больше информации, вот интересный ориентир для разных инструментов: http://binfalse.de/2011/04/04/Comparison-of-compression/

Для примера выше, я использую -9 Для лучшего отношения сжатия, но если время, необходимое для сжимания данных, является более важным, чем соотношение, вам лучше не использовать его (используйте более низкую опцию, то есть -1 или что-то между ).

18
27.01.2020, 19:44

Я пытался сделать это на BSD-версии tar. В этом случае опция --remove-files недоступна. В конце концов, я сделал (и работал):

find folder_to_tar -type f -exec tar --append --file=output_tar_file.tar {} \; -exec rm -v {} \;
1
27.01.2020, 19:44

когда вы используете перенаправление ввода-вывода в bash с >, исходный файл будет пустым перед записью новых данных.

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

gzip -c some-file | dd conv=notrunc of=some-file

В большинстве случаев сжатые данные меньше оригинальных. когда gzip читает первые N байтов, он выводит только M байтов, где M < N, поэтому можно безопасно перезаписать первые M байтов исходного файла со сжатыми данными, и оставить данные после первых N байтов без изменений.

но данные будут после окончания gzip.

однако, если dd писать быстрее, чем gzip, я не знаю, что произойдет.


или вы можете сопоставить файл с блочным устройством с помощью функции lossup. для блочного устройства операция записи не приведет к удалению исходных данных.

loop_device=$(losetup -f--show some-file)
gzip -c $loop_device > $loop_device
1
15.10.2020, 13:14

Теги

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