Forum général.cherche-logiciel Découpage de sortie standard

Posté par  .
Étiquettes : aucune
1
16
nov.
2009
Bonjour,

je recherche un programme qui fonctionne avec des pipes, qui assemble des flux d'entrée, et les désassemble à l'autre bout.

Je récupère plusieurs fichiers via une connexion ssh. Je n'utilise pas scp car j'effectue des manipulations à la volée (très gros fichiers, pas envisageable de les traiter sur disque).

Exemple basique avec une compression lzo comme traitement (en réalité il y a d'autres étapes):

ssh sauvegarde-distante@mon-serveur.com "lzop --to-stdout '/mon-dossier/mon-fichier1.big' '/mon-dossier/mon-fichier2.big' > mes-fichiers.lzo

J'obtiens donc une archive compressée contenant 2 fichiers. Ca fonctionne, pas de problème.

Je préfère obtenir une archive par fichier. Je me suis dit que tar est fait pour d'un côté assembler des fichiers, et de l'autre les séparer. Il me semble êtreun bon candidat.
J'ai essayé avec ce genre de chose:

ssh sauvegarde-distante@mon-serveur.com "echo '/mon-dossier/mon-fichier1.big' '/mon-dossier/mon-fichier2.big' | xargs lzop --to-stdout | tar cf - -" | tar x

Mais non, je n'y arrive pas. C'est à cause du xarg qui doit être en dernier dans la chaîne des pipes de crois.
J'ai essayé avec --use-compress-program lzop sans résultat.

Une idée pour remplacer tar, ou pour le faire fonctionner dans ce cas ?
  • # Sans echo

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

    A mon avis, tu peux enlever le premier pipe:
    ssh sauvegarde-distante@mon-serveur.com " lzop --to-stdout '/mon-dossier/mon-fichier1.big' '/mon-dossier/mon-fichier2.big' | tar cf - -" | tar x

    Comme ça tu évites le xargs, et ça doit marcher exactement de la même façon.
  • # bien compliqué...

    Posté par  . Évalué à 2.

    pkoi faire aussi compliqué ?

    alors que rsync pourrait faire ca aussi bien
    rsync -az sauvegarde-distante@mon-serveur.com:/mon-dossier/ /mon_backup

    eventuellement passer par ssh avec l'option -e de rsync

    pkoi rsync ?
    parce ca ne transferera que les parties de fichiers qui ont été modifiés
    une sorte de sauvegarde incrementale
  • # Option --lzop ?

    Posté par  . Évalué à 4.

    Chez moi, mon tar a une option --lzop, qui devrait grandement te simplifier la tâche (tar -cf --lzop d'un côté et tar xf de l'autre ...). Quoique là, on compresse l'archive en entier, pas chaque fichier ...

    En fait, tu veux récupérer les fichier individuellement, mais compressés chacun ?
    Faudrait faire un ptit script du côté de ton serveur, peut-être. Genre, si tu veux la compression à la volée, je vois bien un workaround un peu crade mais genre :
    - tu crées des fifos pour chaque fichier
    - tu lances en background un lzop de chaque fichier vers chaque fifo (qui ne seront donc exécutés qu'à la demande, et sans compression sur le disque)
    - tu tar tes fifos (là je sais pas si tar va prendre juste les fifos ou bien leur contenu ...)
    - à l'autre bout, tu détarres et t'as tes fichiers séparés compressés
    • [^] # Re: Option --lzop ?

      Posté par  . Évalué à 2.

      En fait c'est juste impossible en utilisant un seul flux, c'est clair.
      Même avec des fifos ça ne colle pas car on perd le nom des fichiers destination.
      Il faudrait une option dans tar par exemple qui permette d'ajouter des données en forçant un nom. Par exemple j'ajoute des données à une archive (venant d'un fichier ou d'un flux) et je demande à tar de stocker le fait que ces données portent le nom de monfichier.dat. Comme ça, à la décompression, j'ai mon fichier.

      Bon, je continue avec une connexion ssh par fichier :)

Suivre le flux des commentaires

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