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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Un petit script de synchronisation de repertoires sur 2 serveurs

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Un petit script de synchronisation de repertoires sur 2 serveurs

n°1063438
betsamee
Asterisk Zeperyl
Posté le 31-07-2008 à 10:09:08  profilanswer
 

Bonjour
Grâce a l'aide de certains d'entre vous j'ai realise un petit script qui, ma foi me sert grandement.
En fait il scanne des répertoires définis sur un serveur X et répercute les modifs de la journée sur ces mêmes répertoires sur un serveur Y:
 
http://sambranche.blogspot.com/200 [...] on-de.html
 
je suis ouvert a toute critique (tant que ce n'est pas de la méchanceté gratuite), en espérant avoir pu vous aider


---------------
un blog sur Asterisk
mood
Publicité
Posté le 31-07-2008 à 10:09:08  profilanswer
 

n°1063493
esox_ch
Posté le 31-07-2008 à 12:46:58  profilanswer
 

J'ai peut-être rien compris, mais t'es pas en train de refaire le travail que rsync fait (très bien) ?

n°1063853
Taz
bisounours-codeur
Posté le 01-08-2008 à 19:35:25  profilanswer
 

ouais en 100000000x moins puissant et inversement proportionnel niveau bug.

n°1063855
esox_ch
Posté le 01-08-2008 à 19:55:17  profilanswer
 

Ah bah alors j'ai bien compris le but de son script :D

n°1063949
kyncani
Posté le 02-08-2008 à 19:36:47  profilanswer
 

esox_ch a écrit :

J'ai peut-être rien compris, mais t'es pas en train de refaire le travail que rsync fait (très bien) ?


 
+1, rsync sur ssh est vraiment très bien pour faire du mirroring.

n°1063963
betsamee
Asterisk Zeperyl
Posté le 02-08-2008 à 22:36:02  profilanswer
 

oui effectivement j'ai reinvente la roue sur ce coup
merci de vos contributions :jap:
 
par contre au niveau des bugs taz , peux tu etre plus explicite stp


---------------
un blog sur Asterisk
n°1064042
kyncani
Posté le 03-08-2008 à 16:19:28  profilanswer
 

betsamee a écrit :

par contre au niveau des bugs taz , peux tu etre plus explicite stp


 
Copie du script pour que l'on puisse comprendre ce que j'écris quand tu auras amélioré ton script sur ton blog :
 
###############################################################
#! /bin/sh
# SL 2008-07-21 Script de synchronisation des repertoires entre la prod et le backup
fichiermodifs=`date +%Y%m%d`'_modifs.sh'
fichiermodifsgz='modifsjour'`date +%Y%m%d`'.tar.gz'
#coordonnees ftp du serveur cible
serveurftp='XXXXXXXXXXX'
userftp='XXXX'
mdpftp='XXXX'
#effacement des modifs de la veille
rm -f -R /db/modifsjour/*
#boucle sur chacun des repertoires que l'on veut synchroniser
for chemin in "/usr/local/scripts/" "/usr/local/apache2/htdocs/" "/bin/*.sh" "/db/factures*" "/db/relancesPDF/" "/db/Archivage/" "/db/contentieux/" "/db/contentieux/" "/db/courriersPDF/" "/db/courriersPDF/" "/db/CR_SiegesPDF/" "/db/tickets/"
do
echo "Traitement de : "$chemin
#creation d'une ligne dans le script qui s'executera sur le serveur de backup avec tous les
#fichiers modifies dans la journee
find $chemin -name "*.*" -mtime 0 | awk 'BEGIN{FS="/"}{print "/bin/sh /bin/repcp.sh \"" $NF "\" \""$0"\""}' >> /db/modifsjour/$fichiermodifs
#copie dans un repertoire de tous les fichiers modifies dans la journee
find $chemin -name "*.*" -mtime 0 | awk '{print "cp \"" $0 "\" /db/modifsjour/"}'|sh
done
cd /db/
#creation de l'archive
tar -cvzf $fichiermodifsgz /db/modifsjour/
#transfert ftp vers le serveur de backup
/usr/bin/ftp -nv $serveurftp < <SCRIPT
quote USER $userftp
quote PASS $mdpftp
binary
prompt
cd modifs
mdelete *.gz
put $fichiermodifsgz
prompt
quit
SCRIPT
rm /db/$fichiermodifsgz
###############################################################
 
PS: Je te liste quelques erreurs évidentes afin que tu t'améliores, courage :)
 
J'ai jeté un coup d'oeil rapide et par exemple :
 
- Si un fichier est supprimé/modifié sur le mirroir, il ne sera jamais restauré si le fichier n'est pas modifié sur le serveur source.
 
- Utilisation d'un protocole réseau non sécurisé pour transférer les données, un simple sniffing révèle tout de suite le nom utilisateur, mot de passe et fichier à transférer sur le mirroir pour mettre à peu près ce que l'on veut sur celui-ci.
 
- Tu écris les mots de passe en clair dans tes scripts apparemment. En plus, tu transfères tout /usr/local/scripts/ en clair (archive non cryptée sur un protocole ftp non crypté), donc un sniffing devrait récupérer pas mal de mots de passe intéressants dans tes scripts.
 
- Les fichiers qui ne comprennent pas de "." dans leurs noms ne sont pas transférés.
 
- Les liens symboliques sont copiés comme des fichiers classiques.
 
- Evaluation de code extrèmement insécurisée (le "| sh" ). Essaie donc de créer un fichier (avec les quotes dans le nom, c'est important) : /db/Archivages/" &>/dev/null; touch /usr/local/scripts/coucou; true || "
 
 
Pas de gestion d'erreur, ainsi :
 
- Si le script de mise à jour sur le mirroir est interrompu, par un reboot intempestif par exemple, les mises à jour ne seront jamais effectuées.
 
- Si le lien ftp tombe pendant le transfert, les mises à jour qui n'ont pas été transférées ne seront jamais effectuées.
 
- Si pour une raison quelconque, les copies de fichiers ou le tar ne fonctionne pas (problème temporaire d'espace disque, dépassement temporaire du nombre de processus, ...), des fichiers modifiés ne seront jamais transférés.
 
 
Ceci dit, ne désespère pas, c'est très très bien les scripts perso pour automatiser les tâches, pas besoin de faire à la main ce qu'un machine peut très bien faire toute seule. Et on a tous fait ce genre d'erreur par le passé.
 
Courage betsamee :)
 
( Mais pour le coup, rsync/ssh pour du mirroring, c'est vraiment très bien (encore) )

n°1064043
betsamee
Asterisk Zeperyl
Posté le 03-08-2008 à 16:26:49  profilanswer
 

merci c'est pas tombe dans l'oreille d'un sourd :jap:


---------------
un blog sur Asterisk
n°1064044
kyncani
Posté le 03-08-2008 à 16:29:07  profilanswer
 

Alors peut-être deux/trois conseils à tirer :
 
- Réutilise des logiciels existants plutot que d'en inventer de nouveaux lorsque c'est possible, ils ont déjà été testé et validé par d'autres.
 
- Ne transfère jamais de données potentiellement sensibles sans les crypter.
 
- Fait extrèmement attention aux évaluations de code, n'évalue jamais de donnée sans savoir exactement la forme qu'elle prend.
 
- Les codes de retour et d'erreur plus jamais tu n'ignoreras, c'est très très mal.


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

  Un petit script de synchronisation de repertoires sur 2 serveurs

 

Sujets relatifs
Script BAT, reprise après démarrage ?[Script] Uploader une image sur imagup.com
Script d'arret du PC si disque trop chaudDEmande d'avis pour un script mac os X
partage samba, et suppression repertoiresFireFoxe ne veut pas gérer mon script !
Script : echo avec l'option -eScript recherche de fichier
substr dans une variable de script shellScript supprimant/déplacant des fichiers vieux de x jours
Plus de sujets relatifs à : Un petit script de synchronisation de repertoires sur 2 serveurs


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