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?

Espace
la source
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.

Espace
la source
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.

jtbandes
la source
1

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

rétracile
la source