Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/12/2011, 10h04   #1
Candidat au titre de Membre du Club
 
Antho
Inscription : janvier 2010
Messages : 45
Détails du profil
Informations personnelles :
Nom : Antho

Informations forums :
Inscription : janvier 2010
Messages : 45
Points : 11
Points : 11
Par défaut shell script d'archivage de logs

Bonjour,

J'essaie de faire un script me permettant d'archiver des fichiers .log se trouvant dans des dossiers "log".

Étant débutant dans ce domaine, je vais vous exposer tout ça en détail :

1 - Chercher dans une arborescence les dossiers "log",
2 - Dans chaque dossiers, compter le nombre de fichiers .log,
3 - Si les fichiers sont vieux de X jours, les compresser dans une archive,
4 - Déplacer l'archive vers une arborescence identique bis.

Exemple de l'arborescence :

/home/arbo1/dossier1/dossier2/log

Arborescence bis qui devra se créer :

/home/arbo2/dossier1/dossier2/log

Code :

1 -
Code :
find . -name log -type d -exec echo '{}' +
J'ai bien le chemin de mes dossiers "log" qui est retourné.

2 - Comment aller dans le path retourné des dossier logs ?
Sinon quand j'y vais à la main, j'ai bien le nombre de fichiers retourné.

3 -
Code :
find *.log -mtime +30 -exec gzip log.tar {} \;
De ce côté, mes logs sont compressés un à un, alors que je veux une archive globale.

4 - Comment dire qu'on veut recréer l'arborescence principale dans un dossier source bis (arbo2/dossier1/dossier2/log) afin de déplacer cette archive dans le dossier log de l'arborescence bis ? Comment récupérer qu'une partie du path avec pwd ?

J'avais en tête de créer une fonction pour toutes ces étapes et de faire une boucle for pour chaque dossier "log" appeler cette fonction.

Merci d'avance
LuffyyffuL est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 10h32   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 538
Points : 7 754
Points : 7 754
Code :
find............... | xargs tar uvpf /chemin/bidule.$(date +%Y%m%d).tar
tu auras chaque répertoire dans ton tar ...
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/12/2011, 10h58   #3
Candidat au titre de Membre du Club
 
Antho
Inscription : janvier 2010
Messages : 45
Détails du profil
Informations personnelles :
Nom : Antho

Informations forums :
Inscription : janvier 2010
Messages : 45
Points : 11
Points : 11
merci pour la réponse.

Je ne veux pas archiver tout mes répertoires log en une seule.

Mais faire des archives des .log et de les déplacer dans une arborescence bis.
LuffyyffuL est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/12/2011, 16h10   #4
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 538
Points : 7 754
Points : 7 754
alors

Code :
find /chemin/ -type f -name "*.log" -exec mv {} /autre/chemin/ \;
par contre si il faut aussi créer une nouvelle arborescence ça ne peut pas se faire un une passe il faut alors faire un petit script pour que ça puisse marché.
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/12/2011, 22h59   #5
Candidat au titre de Membre du Club
 
Antho
Inscription : janvier 2010
Messages : 45
Détails du profil
Informations personnelles :
Nom : Antho

Informations forums :
Inscription : janvier 2010
Messages : 45
Points : 11
Points : 11
Code :
1
2
3
4
5
6
for folder in $(find . -name log -type d )
do :
    ls -A $folder| wc -l
    tar -czf $folder.tar.gz $(find $folder *.log -mtime +30)
    mv $folder.tar.gz $chemin-archive
done
J'arrive à créér une archive du dossier "log" qui a des fichiers ".log" vieux de 30jours. Mais le script s'arrête dès qu'il a trouvé un dossier ayant de vieux ".log", s'il y a d'autres dossiers "log" avec de vieux ".log" il ne va pas les archiver.

Par contre s'il trouve un dossier "log" avec des ".log" trop récents, il passe bien au suivant.

Après ce que j'essaie de faire, ce n'est pas de compresser le dossier contenant une arborescence avec un dossier "log" et des fichiers ".log" vieux de X jours, mais de compresser les fichiers ".log" dans une archive.
LuffyyffuL est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h13.


 
 
 
 
Partenaires

Hébergement Web