Сжимайте файлы при чтении данных из STDIN


127

Можно ли сжимать (создавать сжатый архив) данные при чтении из stdin в Linux?


Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что он принадлежит Unix и Linux,
Дэн Даскалеску

Ответы:


180

Да, используйте для этого gzip. Лучший способ - прочитать данные как входные и перенаправить сжатый в выходной файл, т.е.

cat test.csv | gzip > test.csv.gz

cat test.csvотправит данные как стандартный вывод, а использование gzip со знаком трубы будет читать эти данные как стандартный ввод. Обязательно перенаправьте вывод gzip в какой-либо файл, поскольку сжатые данные не будут записаны в терминал.


4
Обратите внимание, что файлы test.csv.gz имеют нулевой размер, пока поток данных не будет закрыт.
MUY Belgium

... и как это сделать? Неужели это отдельный вопрос?
russellpierce 08

9
Это также работает с xz:mysqldump mydb | xz > dbdump.sql.xz
jeroen

1
Можно использовать -9, уровень сжатия по умолчанию -6.
Pablo A

110

Да, gzipпозволю тебе это сделать. Если вы просто запустите gzip > foo.gz, он сжимает STDIN в файл foo.gz. Вы также можете передавать в него данные, например some_command | gzip > foo.gz.


1

gzip > stdin.gzвозможно? В противном случае вам нужно конкретизировать свой вопрос.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.