je suis en train de buter sur une procédure de restauration.
J'ai un gros fichier qui est la sauvegarde d'une base SQL. Lors de mes tests, j'utilise un petit fichier, tout marche bien. Lorsque j'utilise le vrai fichier, la connexion ssh se ferme au bout de quelques secondes sans core dump ni rien. Ough !
Les détails:
Avant d'injecter le fichier, je dois le faire précéder de quelques commandes. Une fois l'injection terminée, j'ajoute d'autres commandes. Ces commandes sont dans pre.sql et post.sql.
Je procède comme ceci:
echo "$(< pre.sql)" "$(bzip2 --decompress --keep --stdout mysql.bz2)" "$(< post.sql)" | mysql --user=utilisateur --password --database=mabase
Pour isoler le problème, je fais:
echo "$(< pre.sql)" "$(bzip2 --decompress --keep --stdout sauvegarde_mysql.bz2)" "$(< post.sql)" > toto.sql
Pas mieux, ça ferme la connexion ssh au bout de quelques secondes et je n'ai pas trace du fichier toto.sql
note: je ne souhaite pas décompresser le fichier sauvegarde_mysql.bz2 avant l'opération car ça prend vraiment beaucoup de place et de temps.
Question 1: pourquoi tant de 'N' ?
Question 2: comment puis-je faire pour envoyer mes 3 fichiers via un pipe si l'un d'eux est très gros ?
Je vois une autre solution avec un fifo au lieu d'un pipe, mais ça ne résout pas mon problème car je dois envoyer 3 fichiers dans le fifo sans le fermer, je sais le faire uniquement avec echo comme ci-dessus.
Question 3: avec un fifo, comment envoyer plusieurs fichiers dedans sans qu'il se ferme à la fin du premier ?
Question 4: une solution plus élégante ?
# Pipe et gros fichier --> le soushsell
Posté par podoc . Évalué à 6.
Une solution pour toi est d'utiliser un sous shell :
(
cat pre.sql
bzip2 --decompress --keep --stdout mysql.bz2
cat post.sql
) | mysql --user=utilisateur --password --database=mabase
Ceci va chainer tes commandes et envoyer les sorties standard vers ta commande mysql
c'est la solution que j'utilise pour générer mes mails
Cordialement
[^] # Re: Pipe et gros fichier --> le soushsell
Posté par Michel H . Évalué à -1.
[^] # Re: Pipe et gros fichier --> le soushsell
Posté par gremous . Évalué à 2.
Merci !
Petite précision: il faut des guillemets pour les cat sinon on n'a pas les retours de chariots (les fichiers font plusieurs lignes).
# C'est bel et bien la taille qui compte :-)
Posté par Kerro . Évalué à 6.
echo "contenu1xxxxxxxx" "contenu2xxxxxxxx" "contenu3xxxxxx"
Comme ton contenu2 est très gros, ta ligne de commande dépasse la limite et zou, plantage.
Moralité: il est impossible d'utiliser cette manière de faire dans ton cas.
[^] # Re: C'est bel et bien la taille qui compte :-)
Posté par gremous . Évalué à 3.
Tout s'éclaire. Merci pour l'info. Je ne voyais pas de raison valable au plantage. Maintenant si.
Avec la réponse de podoc je suis sorti d'affaire.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.