Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1833 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [ RESOLU] tri sur la date

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ RESOLU] tri sur la date

n°1013334
mogruith
Posté le 21-02-2008 à 11:09:55  profilanswer
 

Bonjour
 
un script bash fait une synchronisation rsync tous les matins entre deux répertoires distants. La différence se fait sur l'ajout d'un fichier unique .
 
Cette synchronisaton est logguée puis envoyé par mail. Le hic, c'est que tous les fichiers du répertoire, apparaissent dans le mail.  
Je ne voudrais en fait voir que le fichier qui a été ajouté (ou modifié).
 
Quelqu'un aurait une piste ?
 
Merci


Message édité par mogruith le 21-02-2008 à 14:43:42
mood
Publicité
Posté le 21-02-2008 à 11:09:55  profilanswer
 

n°1013337
black_lord
Modérateur
Truth speaks from peacefulness
Posté le 21-02-2008 à 11:12:49  profilanswer
 

source du script ?


---------------
uptime is for lousy system administrators what Viagra is for impotent people - mes unixeries - github me
n°1013340
mogruith
Posté le 21-02-2008 à 11:22:40  profilanswer
 

#!/bin/bash
LOCAL_LOG=/var/log/synchro.log
rm -f $LOCAL_LOG
touch $LOCAL_LOG
 
function calc_date ()
{
        date +"%Y-%m-%d %H:%M:%S :"
}
 
# Enregistrement dans la LOG locale
echo "`calc_date` DEBUT SYNCHRONISATION REP1 REP2! ($*)" >> $LOCAL_LOG
 
# Synchronisation du répertoire rep1 vers rep2
echo "`calc_date` Synchronisation du répertoire rep1 vers rep2 ! ($*)" >> $LOCAL_LOG
# La synchronisation est lancé par l'utilisateur lambda
su - lambda << EOF
./synchro_rep1rep2.sh
exit
EOF
 
# Le script est dans /root
cd
rsync -atporuvzb /home/lambda/synchro/rep /data/synchro/
 
 
./copie_1.sh
echo "`calc_date` Copie 1 ok !" >> $LOCAL_LOG
 
 
# on recopie
cd
./copie_2.sh
echo "copie 2 ok !" >> $LOCAL_LOG
echo "`calc_date` SYNCHRONISATION REP1 REP2 TERMINE ! ($*)" >> $LOCAL_LOG
 
cd
./rapport.sh > script de mail, il envoie simplement un rapport.
 
pour expliquer un peu mieux les choses :
J'ai un serveur windows qui reçoit un fichier tous les matins d'un partenaire. Un de mes serveurs linux, hébergeant une application métier a besoin de ce fichier, il va donc le chercher via rsync tous les matins sur le windows. Il en evoie aussi d'autres par la meme occasion sur un second répertoire du windows, qui se charge de le renvoyer au partenaire (c'est une boucle toute simple en fait)
Comme j'ai des problèmes de droits, je recopie en root sur le linux, le répertoire applicatif vers mon utilisateur lambda qui a le droit de faire du rsync vers le windows.  
Donc root, recopie les fichiers vers le home de lambda, qui lance la synchronisation et qui récupère tous les nouveaux fichiers du windows, et qui au cours de la meme action, envoie les fichiers générés par l'applicatif.
 
ais je été clair ? :)

n°1013348
mogruith
Posté le 21-02-2008 à 11:51:51  profilanswer
 

sinon pour faire plus simple, comment je loggue le fichier le plus récent dans un répertoire ?
 
:)

n°1013354
franceso
Posté le 21-02-2008 à 12:09:15  profilanswer
 

mogruith a écrit :

sinon pour faire plus simple, comment je loggue le fichier le plus récent dans un répertoire ?
 
:)


Un truc très moche (pas le temps de faire mieux :spamafote:), mais qui devrait marcher :

stat -c '%Y %n' ${dir}/* | sort -nr | head -n 1 | cut -d' ' -f 2


 
Mais plutôt que de faire ce genre de choses, tu as peut-être moyen de demander à rsync quels sont les fichies qu'il a eu besoin de synchroniser... Ce serai sans doute plus simple et plus fiable.


---------------
TriScale innov
n°1013358
mogruith
Posté le 21-02-2008 à 12:13:50  profilanswer
 

ben le hic, c'est que je ne connais pas à l'avance le nom du fichier qui va être ajouté. Mais j'ai mis les options -u etc dans le srcipt rsync donc il ne synchronise que les nouveaux . je veux juste pouvoir lire dans un mail, que le fichier "machin" est arrivé ce matin et qu'il a été mis a jour dans le répertoire final de mon application.
 
Je vais tester ton "truc"
 
merci

n°1013404
franceso
Posté le 21-02-2008 à 14:03:45  profilanswer
 

Je comprends toujours pas ce qui t'empêche de récupérer la sortie de rsync pour savoir quel fichier a été transféré :??:

~/tmp> mkdir dir1 dir2
~/tmp> touch dir1/file1 dir1/file2 dir2/file1
~/tmp> rsync -ruv dir1/ dir2/
building file list ... done
file2
 
sent 101 bytes  received 42 bytes  286.00 bytes/sec
total size is 0  speedup is 0.00


 
On voit très bien que c'est 'file2' qui a été ajouté, non ?


---------------
TriScale innov
n°1013431
mogruith
Posté le 21-02-2008 à 14:41:53  profilanswer
 

Effectivement cela fonctionne bien.
 
J'ai aussi essayé ca et cela me donne un résultat aussi satisfaisant.
find . -mmin -500 | xargs echo {}  >> testlog \;
 
Merci pour ton aide.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [ RESOLU] tri sur la date

 

Sujets relatifs
[Résolu] VirtualBox et XP : écran noir au démarrageImpossible demarrer en mode graphique mandriva 2008 (resolu)
[Linux] OpenLDAP PosixGroup + ProftpdRésolu: Geforce 4 sur Debian, mais les applis 3d ne se lancent pas
[Résolu] Linux et HyperthreadingKubuntu 7.10 Pb Audio Asus Z53JM-AP016H [RESOLU]
Problème avec la commande date [RESOLU][PERL] : lire et stocker la date d'un fichier [résolu]
Enregistrer la date dans un script [résolu][resolu] Pb de tris par date dans un fichier txt avec plrs séparateurs
Plus de sujets relatifs à : [ RESOLU] tri sur la date


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR