FIND ~~~~ -exec tar.... [ PROBLEMES ] [ SCRIPT ]

FIND ~~~~ -exec tar.... [ PROBLEMES ] [ SCRIPT ] - Multimédia - Linux et OS Alternatifs

Marsh Posté le 21-10-2002 à 12:16:28    


j'ai un script qui fait:
 


.....
for SERVEUR in /truc/machin/liste_serveur
do
  rsh $SERVEUR find /var/.../machin -size +8196k -exec mv {} /tmp \;
  .....
done


 
ca ca marche
mais le but etant de compresser le fichier plutot que de l'envoyer dans /tmp pour libere de l'espace sur le disque /var
 
je pensais faire  


.....
for SERVEUR in /truc/machin/liste_serveur
do
  ....
  rsh $SERVEUR find /var/.../machin -size +8196k -exec tar cvf {}.tar {} \;
  .....
done


 
dans l'idee mais j'obtient un fichier nome {}.tar d'ou probleme
 
si vous avez une idee...


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 21-10-2002 à 12:16:28   

Reply

Marsh Posté le 21-10-2002 à 16:33:54    

kuroineko a écrit a écrit :

 
j'ai un script qui fait:
 


.....
for SERVEUR in /truc/machin/liste_serveur
do
  rsh $SERVEUR find /var/.../machin -size +8196k -exec mv {} /tmp \;
  .....
done


 
ca ca marche
mais le but etant de compresser le fichier plutot que de l'envoyer dans /tmp pour libere de l'espace sur le disque /var
 
je pensais faire  


.....
for SERVEUR in /truc/machin/liste_serveur
do
  ....
  rsh $SERVEUR find /var/.../machin -size +8196k -exec tar cvf {}.tar {} \;
  .....
done


 
dans l'idee mais j'obtient un fichier nome {}.tar d'ou probleme
 
si vous avez une idee...
 




 
je viens de passer mon aprem a ca au boulot....pas trouve de solutions...
 
pour etre + clair ce dont j'ai besoin c'est de savoir comment faire pour garder le {} du find pour m'en servir pour generer le nom de fichier.


Message édité par kuroineko le 21-10-2002 à 16:45:05

---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 21-10-2002 à 17:18:12    

T'as essayé un truc dans ce genre là :

Code :
  1. rsh $SERVEUR find /var/.../machin -size +8196k -exec tar cvf `pwd {}``basename {}`.tar {} \;


à tout hasard ?

Reply

Marsh Posté le 21-10-2002 à 17:21:58    

Essaie de mettre un nom de fichier générique (var_file) suivi de  
la date, voir date et heure si tu lances plusieurs fois par jours
pour certains serveurs ce script (var_file_200310211724 par
exemple).
 
Je sais comment ça peut être possible en utilisant awk, sinon ça  
doit bien être possible tout simplement avec un script shell.

Reply

Marsh Posté le 21-10-2002 à 19:05:08    

Qyridian a écrit a écrit :

Essaie de mettre un nom de fichier générique (var_file) suivi de  
la date, voir date et heure si tu lances plusieurs fois par jours
pour certains serveurs ce script (var_file_200310211724 par
exemple).
 
Je sais comment ça peut être possible en utilisant awk, sinon ça  
doit bien être possible tout simplement avec un script shell.




 
le nomde fichier est le resultat du find obligatoirement...donc pas possible de passer dans une variable.


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 21-10-2002 à 19:18:37    

kuroineko a écrit a écrit :

 
 
pour etre + clair ce dont j'ai besoin c'est de savoir comment faire pour garder le {} du find pour m'en servir pour generer le nom de fichier.
 




 
N'y a-t-il pas moyen de faire un export blabla={}.tar et ensuite
un mv {}.tar $blabla.tar ? Ou alors, si le {} marche sans le .tar  
et qu'il ne marche pas avec .tar, je pense qu'il faut qq chose
pour délimiter le {}, en tcl c justement {} autour de l'expression,
peut-être est-ce [] en shell script...

Reply

Marsh Posté le 21-10-2002 à 19:21:14    

       
for SERVEUR in /truc/machin/liste_serveur
do
 ....
 rsh $SERVEUR find /var/.../machin -size +8196k -exec tar cvf "{}".tar "{}" \;
 .....
done  

Reply

Marsh Posté le 21-10-2002 à 19:23:30    

Qyridian a écrit a écrit :

 
 
N'y a-t-il pas moyen de faire un export blabla={}.tar et ensuite
un mv {}.tar $blabla.tar ? Ou alors, si le {} marche sans le .tar  
et qu'il ne marche pas avec .tar, je pense qu'il faut qq chose
pour délimiter le {}, en tcl c justement {} autour de l'expression,
peut-être est-ce [] en shell script...




 
en script normal c'est simple mais la je peux pas scripter je suis dans un RSH !!!
c'est dingue je trouve pas moyen de le faire...
 tar a besoin de faire interpreter  le {} comme tel et pas comme caracteres { & } ce qui provoque le fichier {}.tar


Message édité par kuroineko le 22-10-2002 à 08:04:45

---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 22-10-2002 à 08:03:40    

minusplus a écrit a écrit :

       
for SERVEUR in /truc/machin/liste_serveur
do
 ....
 rsh $SERVEUR find /var/.../machin -size +8196k -exec tar cvf "{}".tar "{}" \;
 .....
done  






 
non si tu integre des "" dans une commande find il va retourner une erreur style bad statement...


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 22-10-2002 à 08:52:30    

je me suis dit que je pouvait tenter gzip....


rsh XXXXX "find /AAA/BB/C -size +64k -exec `cat {} | gzip -9 > {}.gz \;"


mais a cause du > find ne reconnait plus le caractere \;
 
 
 


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 22-10-2002 à 08:52:30   

Reply

Marsh Posté le 22-10-2002 à 12:27:15    

Mes collegues et moi continuons a chercher mais on trouve pas...


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 22-10-2002 à 12:30:34    

c'est dans ces moments là que je suis en colère contre linux et ça Ô combien fameuse ligne de commande qui permet de tout faire ... en attendant, dès que c'est une peu "spécial", y-a plus personne pour répondre :/

Reply

Marsh Posté le 22-10-2002 à 13:17:48    

Tux Le Penguin a écrit a écrit :

c'est dans ces moments là que je suis en colère contre linux et ça Ô combien fameuse ligne de commande qui permet de tout faire ... en attendant, dès que c'est une peu "spécial", y-a plus personne pour répondre :/




 
en fait c'est tout a fait normal que ca puisse pas marcher puisque  
tar option PARAMETTRES liste de fichier
et {} retour du find est une liste et non un fichier (liste de longueur 1 si il y a qu'un fichier). Gzip pose aussi probleme
 
la solution est en fait simple
utiliser le compresseur standard unix  
compress qui nome de lui meme le fichier en .Z
 
rsh $SERVEUR "find /var/spool/mail -size +8196k -exec compress {} \;"
 


compress util_liste_taille_mail.test_mail_comprs.ksh



---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 22-10-2002 à 13:29:57    

kuroineko a écrit a écrit :

 
 
non si tu integre des "" dans une commande find il va retourner une erreur style bad statement...



:heink: mais kess tu raconte ?  
 
tes { } ne sont pas escapées c donc le shell qui les interprète avant find, c'est tout ! mets les dans des " ou des ' ou escape les avec \ et ça fonctionne !

Reply

Marsh Posté le 22-10-2002 à 13:35:21    

kuroineko a écrit a écrit :

Mes collegues et moi continuons a chercher mais on trouve pas...
 



C'est marrant, mais en partant de ce que j'ai écrit plus haut, ça a l'air de marcher (à 2 ou 3 corrections près, mais c'était l'idée). Tiens, un truc qui marche comme tu as expliqué (à savoir transforme le fichier "trucmuche.bid" en "trucmuche.bid.tar" avec le find :
 

Code :
  1. find /var/.../machin -size +8196k -exec tar cvf `basename {}`.tar {} \;


 
Pas besoin du pwd, j'y avais pas pensé. Le tar râle un peu, mais man tar devrait arranger les choses, parce qu'il met des répertoires au début. Voir du côté de l'option -P peut-être.
 

Reply

Marsh Posté le 22-10-2002 à 13:39:56    

Tux Le Penguin a écrit a écrit :

c'est dans ces moments là que je suis en colère contre linux et ça Ô combien fameuse ligne de commande qui permet de tout faire ... en attendant, dès que c'est une peu "spécial", y-a plus personne pour répondre :/



Et pourtant, la solution que j'ai donnée hier vers 17H fonctionnait presque. Tout simplement. Qu'est-ce qu'il te faut de plus que la réponse, toi ? (Admettons, ça marchait pas, il y avait juste un `pwd {}` en trop, mais à partir de là, c'était pas compliqué de trouver la solution, si ?)

Reply

Marsh Posté le 22-10-2002 à 13:42:02    

Tux Le Penguin a écrit a écrit :

c'est dans ces moments là que je suis en colère contre linux et ça Ô combien fameuse ligne de commande qui permet de tout faire ... en attendant, dès que c'est une peu "spécial", y-a plus personne pour répondre :/



Alors là vous me faites crever de rire ! vous gueulez sur la ligne de commande sans avoir eu la plus petite délicatesse de lire la man bash ! :/
 
Vous connaissez le principe de "caractères spéciaux" ? et celui d'"échappement" de ces caractères spéciaux ?

Reply

Marsh Posté le 22-10-2002 à 13:46:44    

minusplus a écrit a écrit :

Alors là vous me faites crever de rire ! vous gueulez sur la ligne de commande sans avoir eu la plus petite délicatesse de lire la man bash ! :/
 
Vous connaissez le principe de "caractères spéciaux" ? et celui d'"échappement" de ces caractères spéciaux ?  



Ahlalala, ces jeunes ... Trop impulsifs, mais tellement plein de bonne volonté. 'faut pas que tu leur en veuilles, tu vas leur faire peur.
 
Note, j'ai jamais lu le man bash en entier, moi non plus.

Reply

Marsh Posté le 22-10-2002 à 15:54:36    

Jak a écrit a écrit :

Et pourtant, la solution que j'ai donnée hier vers 17H fonctionnait presque. Tout simplement. Qu'est-ce qu'il te faut de plus que la réponse, toi ? (Admettons, ça marchait pas, il y avait juste un `pwd {}` en trop, mais à partir de là, c'était pas compliqué de trouver la solution, si ?)




non ca marche pas enfin pas assez stable un coup ca marchait un coup ca marchait pas...le test avait selectionne certain fichiers mais pas tous parmis les fichiers recquis.


---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 22-10-2002 à 15:57:33    

minusplus a écrit a écrit :

Alors là vous me faites crever de rire ! vous gueulez sur la ligne de commande sans avoir eu la plus petite délicatesse de lire la man bash ! :/
 
Vous connaissez le principe de "caractères spéciaux" ? et celui d'"échappement" de ces caractères spéciaux ?  




 
oui on les connait et oui on a tous (enfin dans mon equipe de boulot relu le bash et le ksh pour voir comment ca allait pouvoir passer) et toute notre equipe de'IT n'a pas trouve de solution 100% parfaite pour ce cas precis et donc pour pas perdre plus de temps on a dit stop on laisse tomber tar et on fait ca avec compress comme ca plus de probleme de selection du nom ou creer nomidentique+extention_du_compress
 
avantages syntaxique evident
compress -f truc
donne
truc.Z et non pas turc + truc.Z comme deuxieme fichier
ce qui facilitera les lectures & maintenances futures du script


Message édité par kuroineko le 22-10-2002 à 16:00:52

---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le 22-10-2002 à 16:33:02    

kuroineko a écrit a écrit :

 
non ca marche pas enfin pas assez stable un coup ca marchait un coup ca marchait pas...le test avait selectionne certain fichiers mais pas tous parmis les fichiers recquis.
 



Je vois pas trop le rapport entre le test et la commande, là ...

Reply

Marsh Posté le 22-10-2002 à 18:45:59    

Jak a écrit a écrit :

Je vois pas trop le rapport entre le test et la commande, là ...




 
on a teste ta commande sur un groupe de fichier bidons
et selon leurs structures (dans le nom de fichier) ta commande fonctionne ou ne fonctionne pas.
 
en renomant les fichiers qui merdaient ca passait.
 
conclusion : le resultat de ta commande est directement depandant de la forme du nom du fichier.
 
un fichier contenant plusieurs "." & " " ne passent pas a coup sur le retour du find est > 1
donc errone en bash ca march mieux qu'en ksh mais tjrs pas a 100%
precision :
test en condition reel :
donc sous RSH $SERVEUR "......"
sur les 2 shells du reseau
bash
ksh
le probleme est surement lie a l'interpretation des '' et de {} a l'interieur de ""


Message édité par kuroineko le 22-10-2002 à 18:52:31

---------------
[:kuroineko] Francois.P tel: (+33)617230820 http://www.ifrance.com/fpussault  fpussault@caramail.com
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed