Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
nombre réponses : 12

#0 -1 »  [Résolu] problème de recursion avec tar » Le 26/09/2012, à 16:54

zoulbiba
Réponses : 28

Bonjour,
je dois mettre en place un script pour récupérer et compresser tous les fichiers doc, xls , txt et pdf contenu dans un répertoire (ici commun) et dans ces sous-répertoires.

*lorsque j'utilise la commande suivante le tar qui est censé être récursif ne l'est pas :

==>   tar zcvf commun.tgz *.txt *.xls *.doc *.pdf   
dans le commun.tgz je ne retrouve aucun des fichiers contenu dans les sous-répertoires.

idem pour la commande :
==>   tar zcvf commun.tgz --recursion *.tgz --recursion *.xls --recursion *.doc --recursion *.pdf

*Je me suis alors dirigé vers la commande find -exec et je suis parvenu au résultat voulu seulement lorsque j'automatise la commande via CRON elle ne marche que sur un serveur  sur deux ... sans que je ne trouve d’explication logique.

==>   find . \( -name '*.xls' -o -name '*.txt' -o -name '*.doc' -o -name '*.pdf' \) -exec cp {} DOSSIER_TEST \;
puis je  tar le répertoire DOSSIER_TEST
Cette méthode ne marchant que sur 1 serveur sur 2 et tous les fichiers se trouvant en bordel dans le même répertoire j'ai renoncé à cette façon de faire.


*après plusieurs heures de recherche et pleins de cheveux en moins j'ai décidé d'utiliser la commande tar --exclude
seulement voila la commande :

==>    tar zcvf commun.tgz --exclude '*.a*' --exclude '*.b*' --exclude '*.db' --exclude '*.D*' --exclude '*.e*' --exclude '*.f*' --exclude '*.g*' --exclude '*.h*' --exclude '*.g*' --exclude '*.h*' --exclude '*.g*' --exclude '*.i*' --exclude '*.j*' --exclude '*.k*' --exclude '*.l*' --exclude '*.m*' --exclude '*.n*' --exclude '*.o*' --exclude '*.q*' --exclude '*.r*' --exclude '*.s*' --exclude '*.u*' --exclude '*.v*' --exclude '*.w*' --exclude '*.y*' --exclude '*.zip' --exclude '*.M*' --exclude '*.P*' --exclude '*.Y*' --exclude '*.H*' --exclude '*.I*' --exclude '*.dl*' --exclude '*.dt*' --exclude '*.X*' --exclude '*.N*' --exclude '*.E*' --exclude '*.B*' -- exclude '*.c*' --exclude '*.to*' --exclude '*.p*' --exclude '*.xm*' --exclude '*.c*' /home/partages/commun

J'aimerai améliorer cette commande et faire quelque chose comme ça :     tar zcvf commun.tgz --exclude "TOUT" sauf (*.txt *.xls *.pdf *.doc)
merci de votre aide

#1 Re : -1 »  [Résolu] problème de recursion avec tar » Le 26/09/2012, à 18:14

zoulbiba
Réponses : 28

-En effet Nesthib ta commande marche partiellement, au début tout se passe bien puis plein d'erreurs surviennent "  tar: synthese.doc : stat impossible: Aucun fichier ou dossier de ce type".
Lorsque je regarde mon dossier archiver (commun.tgz) je retrouve l'arborescence et les fichiers voulu mais incomplet du aux erreurs.

-Pingouinux  ta commande marche mais ne me permet pas de récupérer les fichiers contenu dans les sous-dossier. Dans le répertoire de base j'ai des sous-dossiers qui contiennent d'autres sous-dossiers etc...


merci de vos réponses je repasserai demain faire d'autre tests et essayer de trouver une solutions ^^

#2 Re : -1 »  [Résolu] problème de recursion avec tar » Le 27/09/2012, à 10:11

zoulbiba
Réponses : 28

En effet Pingouinux je n'avais pas lancé les 2 commandes et en faite cela semble marcher à la perfection .

Reste un petit détail a voir car lorsque je lance la commande de Nesthib :   ==> find ton_dossier -iregex '.*.\(txt\|xls\|doc\|pdf\)' | wc -l cela me renvoie 1655 fichiers trouvés dans le répertoire d'origine et lorsque j'effectue cette même commande sur le dossier obtenu avec la commande de  Pingouinux cela me renvoie 1651 fichiers trouvés.

Je vais regarder ça et pas tarder a mettre problème résolu encore merci !

PS : Euh je ne serais pas contre quelques explications quand a ta commande shopt -s globstar

#3 Re : -1 »  [Résolu] problème de recursion avec tar » Le 27/09/2012, à 17:54

zoulbiba
Réponses : 28

Pingouinux tes deux commandes marchent bien mais lorsque je les met dans un script cela me renvoie l'erreur suivante:
line 36: shopt: globstar: invalid shell option name.
Du coup la récursion n'est plus faite.

Nesthib ta commande   ==find ton_dossier -iregex '.*.\(txt\|xls\|doc\|pdf\)' -print0 | xargs -0 tar zcvf commun.tgz== marche.
Me reste plus qu'à la tester dans un script, mais la pas le courage je verrais cela demain.

encore merci

#4 Re : -1 »  [Résolu] problème de recursion avec tar » Le 28/09/2012, à 11:30

zoulbiba
Réponses : 28

Mon script est bien un script bash.
Je dois déployer ce script sur plusieurs serveurs et sur celui que je test la version est antérieur à bash 4.
Je vas plutôt m'orienter vers la commande de Nesthib que de me lancer dans des mise à jour qui pourraient entraîner d'autres problèmes.

#5 Re : -1 »  [Résolu] problème de recursion avec tar » Le 28/09/2012, à 12:39

zoulbiba
Réponses : 28

Je tourne en rond...

La commande == find ton_dossier -iregex '.*.\(txt\|xls\|doc\|pdf\)' -print0 | xargs -0 tar zcvf commun.tgz ==   ne  Nesthib ne marche bien que lorsque je la lance en local ( j'ai fait une copie du répertoire en question d'un des serveurs sur mon ordi pour faire des test). Donc en local je récupère bien tous les fichiers voulu.     

Mais si je la lance depuis l'un des serveurs je n'ai qu'un seul sous-répertoire dans mon fichier tgz  et ne récupère donc quasi aucun des fichiers voulu...
Je n'ai pourtant aucun message d'erreur et lorsque je regarde la commande travailler il me liste bien tous les fichiers voulu.

#6 Re : -1 »  [Résolu] problème de recursion avec tar » Le 01/10/2012, à 17:31

zoulbiba
Réponses : 28

Bonjour Credenhill ta commande marche bien lorsque je la lance à la main mais ne marche pas quand j'essaye de l'automatiser via CRONTAB.

Finalement je crois que mon problème reste CRONTAB je vais donc aller trifouiller à droite à gauche et sûrement revenir poster sur ce site.

Encore merci les gens pour toutes ces solutions.

#7 Re : -1 »  [Résolu] problème de recursion avec tar » Le 02/10/2012, à 09:39

zoulbiba
Réponses : 28

voici le crontab :

00 23 * * 1-5 /home/localsave/bin/sauvegarde_local.sh residence

et voici le script

#!/bin/bash 

DATE=`date +%A` 
#Indique le jour de la date actuelle 

DH=/home/localsave/donnees_heberg 
DA=/home/localsave/donnees_accueil 
#DG=/home/localsave/donnees_garone 
DC=/home/localsave/commun 
#chemins des donnees/repertoires a sauvegarder 
SH=/home/localsave/sauve_heberg 
SA=/home/localsave/sauve_accueil 
#SG=/home/localsave/sauve_garone 
SC=/home/localsave/sauve_commun 
#chemins ou les donnees/repertoire seront sauvegardees et stockees

	case $1 in 

	        residence) 

		#Serveurs residences 

		############# ACCUEIL #############     
	        cd $DA 
	        tar zcvf $SA/accueil_$DATE.tgz * 
	         

		############# HEBERG #############   
	        cd $DH 
	        tar zcvf $SH/heberg_$DATE.tgz * 
	         

    		############# COMMUN #############   
	        cd $DC/.. 
	        find commun -iregex '.*.\(txt\|xls\|doc\|pdf\)' | tar -T - -zcvf $SC/commun_$DATE.tgz
        	        
                ;; 

       	        restaurant) 

		#Serveurs restaurants 

		############# GARONE #############      
       	        #cd $DG 
	        #tar zcvf $SG/garone_$DATE.tgz * 
		 

	        ############# COMMUN #############   
                cd $DC/.. 
                find commun -iregex '.*.\(txt\|xls\|doc\|pdf\)' | tar -T - -zcvf $SC/commun_$DATE.tgz 
		
		;;
	esac

edit modo : merci d'utiliser les balises [ code ]

#8 Re : -1 »  [Résolu] problème de recursion avec tar » Le 03/10/2012, à 15:34

zoulbiba
Réponses : 28

Bonjour Credenhill j'ai rajouter >> /tmp/log 2>&1
Lorsque je regarde le fichier log il n'y a rien. Il a bien été créer mais il est vide.
j'ai l'impression que seule la fin de la commande  est prise en compte par la CRONTAB car le fichier commun_$DATE.tgz est bien crée  mais il est vide.

#9 Re : -1 »  [Résolu] problème de recursion avec tar » Le 03/10/2012, à 16:23

zoulbiba
Réponses : 28

Le contenu du fichier log après ajout de set -x :


++ date +%A
+ DATE=Wednesday
+ DC=/home/localsave/commun
+ SC=/home/localsave/sauve_commun
+ find commun -iregex '.*.\(txt\|xls\|doc\|pdf\)'
+ tar -T - -zcvf /home/localsave/sauve_commun/commun_Wednesday.tgz

J'avais éliminer toutes les parties du script qui ne m’intéressent pas afin de limiter lse problèmes.
Au vu du contenu du log je suppose que CRON ne gére pas la commande ( find commun -iregex '.*.\(txt\|xls\|doc\|pdf\)' | tar -T - -zcvf $SC/commun_$DATE.tgz ) comme il faudrait.

#10 Re : -1 »  [Résolu] problème de recursion avec tar » Le 04/10/2012, à 11:29

zoulbiba
Réponses : 28

voici le log après petite correction d'un lien symbolique un peu bancale :
mais toujours rien dans mon fichier tgz

++ date +%A
+ DATE=Thursday
+ DH=/home/localsave/donnees_heberg
+ DA=/home/localsave/donnees_accueil
+ DC=/home/localsave/commun
+ SH=/home/localsave/sauve_heberg
+ SA=/home/localsave/sauve_accueil
+ SC=/home/localsave/sauve_commun
+ cd /home/localsave/commun/..
+ find commun -iregex '.*.\(txt\|xls\|doc\|pdf\)'
+ tar -T - -zcvf /home/localsave/sauve_commun/commun_Thursday.tg

#11 Re : -1 »  [Résolu] problème de recursion avec tar » Le 08/10/2012, à 11:09

zoulbiba
Réponses : 28

La commande suivante ne me trouve rien:

find commun -iregex '.*.\(txt\|xls\|doc\|pdf\)'

 


En ajoutant le / cette commande marche parfaitement même en automatisant via CROTNAB.

find commun/ -iregex '.*.\(txt\|xls\|doc\|pdf\)'


Encore merci pour vôtre aide, tous mes problème sont enfin résolu.
enfin pour l'instant,
a bientôt.
Zoubi