Compresser les fichiers lors de la lecture des données depuis STDIN


127

Est-il possible de compresser (créer une archive compressée) des données lors de la lecture depuis stdin sous Linux?


Je vote pour clore cette question comme hors-sujet car elle appartient à Unix et Linux
Dan Dascalescu

Réponses:


180

Oui, utilisez gzip pour cela. Le meilleur moyen est de lire les données en entrée et de rediriger le fichier compressé vers le fichier de sortie.

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

cat test.csvenverra les données comme stdout et en utilisant le signe de tube gzip lira ces données comme stdin. Assurez-vous de rediriger la sortie gzip vers un fichier car les données compressées ne seront pas écrites sur le terminal.


4
Notez que les fichiers test.csv.gz restent de taille 0 jusqu'à ce que le flux de données soit fermé.
MUY Belgique

... et comment fait-on ça? Est-ce vraiment une question distincte?
russellpierce

9
Cela fonctionne également avec xz:mysqldump mydb | xz > dbdump.sql.xz
jeroen

1
Pourrait utiliser -9, le niveau de compression par défaut est -6.
Pablo A

110

Oui, gzip vous permettra de le faire. Si vous exécutez simplement gzip > foo.gz, il compressera STDIN dans le fichier foo.gz. Vous pouvez également y diriger des données, comme some_command | gzip > foo.gz.


1

gzip > stdin.gzpeut-être? Sinon, vous devez étoffer votre question.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.