Forum Linux.général Compression à la volé

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes : aucune
1
27
juin
2013

Bonjour,

Je réalise un export d'un base de données via un script, il génère un gros fichier dump et un fichier log. Tout ça est stocké sur le disque pour être compressé par la suite et sauvegardé sur un autre serveur via backuppc.

Afin de gagner de la place j'aimerais faire en sorte que l'export soit compressé à la volé. J'ai essayé :

#exp [...] file=/monfic.dump log=monfic.log | tar -czf /export/export-oracle.tar.gz

Mais tar me répond qu'il est lâche et ne veux pas archiver un fichier vide.

  • # gzip

    Posté par  (site web personnel) . Évalué à 1.

    tar ne compresse pas. Il crée une archive à partir de plusieurs fichiers.

    Si tu veux compresser, c'est du coté de gzip qu'il faut regarder.

    Le "-z" de tar n'est qu'un "raccourci" pour piper à gzip. Ainsi les deux lignes suivantes sont équivalentes :

    tar -czf archive.tar.gz my_files
    tar -c my_files | gzip > archive.tar.gz
    

    Matthieu Gautier|irc:starmad

  • # Auto réponse

    Posté par  (site web personnel) . Évalué à 1.

  • # Si ton machin ne se déplace pas dans le fichier de sortie…

    Posté par  . Évalué à 2. Dernière modification le 27 juin 2013 à 12:07.

    Si ton programme ne fait qu'écrire dans des fichiers sans se déplacer dedans (et si ton script se déplace dans le fichier de sortie, pour compresser à la volée, c'est mort), tu peux lancer un truc du genre :

    [...] file=>(gzip > monfic.dump.gz) log=>(gzip > monfic.log.gz)
    

    Explication :

    >(gzip > truc.gz) va apparaitre comme un fichier /dev/fd/smth, et ce que tu vas écrire dans ce fichier va être envoyé dans le stdin de gzip qui va le compresser et l'envoyer via son stdout dans truc.gz.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.