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 lom (site web personnel) . Évalué à 1.
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 NeoX . Évalué à 2.
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 benoar . Évalué à 4.
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 gremous . Évalué à 2.
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.