Transfert fichiers automatique serveur FTP [RESOLU]

Transfert fichiers automatique serveur FTP [RESOLU] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 04-12-2007 à 15:56:07    

Bonjour,
 
Je vous explique le problème et ma solution actuelle qui n'est pas parfaite loin de la
 
J'ai un serveur FTP sur lesquels sont déposés des fichiers par les utilisateurs du réseau local de ce serveur
J'ai un serveur distant qui doit récupérer les fichiers sur ce serveur FTP en permanence et faire des opérations avec (peu importe lesquelles)
 
Aujourd'hui j'ai
 
1) Un cron qui tourne toutes les 5 min et qui lance le transfert si le script de transfert de tourne pas
2) Le script de transfert ci dessous :
 

Code :
  1. #connexion
  2. ftp -n $HOST <<END_SCRIPT
  3. quote USER $USER
  4. quote PASS $PASS
  5. prompt
  6. cd mondossier
  7. mget *.*
  8. mdelete *.*
  9. quit
  10. END_SCRIPT


 
Mon probleme c'est que quand la connexion internet plante pendant un transfert, le script se bloque et ne se relance jamais
Evidemment à la premier étape, pour lui le script tourne, donc il ne le relance pas
 
Connaissez vous une solution, si possible qui touche le moins possible à l'existant
J'ai fait des tests sans succès avec ncftp
 
Merci d'avance


Message édité par gnafron03 le 10-12-2007 à 15:40:31
Reply

Marsh Posté le 04-12-2007 à 15:56:07   

Reply

Marsh Posté le 04-12-2007 à 16:01:46    

Tu peux faire précéder ton transfert par un test qui vérifie si ton réseau est up ou non.
T'envoie les fichiers si c'est up et tu lances la connexion dans le cas contraire.
 
Et tu pouvoir aussi programmer un truc si la connection te lache en plein cron.
Genre tu détectes un arrêt de transfert sans le signal machin, tu lances la détection de connexion et si ça foire, tu lance et tu reprends.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 05-12-2007 à 11:34:45    

Le serveur ne gère pas la connexion internet donc on peut pas faire comme ca
 
Pour la deuxième idée pourquoi pas, mais je ne vois pas du tout comment faire et c'etait en gros ma question :)

Reply

Marsh Posté le 05-12-2007 à 12:00:34    

Y a pas besoin de "gérer" la connexion pour vérifier que la connectivité est ok. Un ping sur un serveur sur internet (par exemple google, ou les dns de ton FAI). Ca suffit !


Message édité par o'gure le 05-12-2007 à 12:02:26

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 05-12-2007 à 12:02:10    

Pour la deuxieme idée pourquoi ne pas faire fichier "lock" que tu crées via un touch en début de ton script et que tu enleves à la fin une fois que tout est fini.
 
Au début (juste avant de créer) le fichier tu testes si ce fichier existe, si non => tu lances tout ce que tu as à faire, si oui, ben tu passes en mode continuer le précédent ou ce que tu veux.


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 05-12-2007 à 13:40:06    

Je fonctionne déjà avec un fichier "lock"
Le cron se lance toutes les 5min, si le fichier existe il ne fait rien, sinon il lance le script de transfert
 
Donc si le fichier existe je n'ai pas vraiment de moyen de savoir s'il existe car le script est en transfert ou s'il existe depuis 3 jours car la connexion avait planté en cours de transfert
 
Pour le test de connexion ca va résoudre les cas de plantage en cas de défaut de connexion au début (et encore je suis pas sur que ca plante la) mais en cas de plantage au milieu d'un transfere ca ne résoudra rien


Message édité par gnafron03 le 05-12-2007 à 13:42:10
Reply

Marsh Posté le 05-12-2007 à 16:31:34    

Met le PID du process dans le fichier de lock. Au début de ton script, là où tu testes le fichier de lock, vérifie en plus que le process dont le PID est dans le fichier de lock tourne effectivement. Si ce n'est pas le cas, tu effaces le fichier de lock.

Reply

Marsh Posté le 06-12-2007 à 01:15:36    

pour ce genre d'operation, lftp me sembles bien adapté ( transfert et resume )

Reply

Marsh Posté le 06-12-2007 à 08:45:35    

bonne idée matafan, mais le pid reste dans "ps aux" meme quand il plante car aujourd'hui je dois faire un kill dessus quand ca plante pour le relancer
 
quand il apparait avec "ps aux" il tourne forcément ou il y a une colonne genre "etat du process" que l'on peut regarder ?
 
je vais jeter un oeil à lftp

Reply

Marsh Posté le 06-12-2007 à 09:10:25    

mon script ressemble maintenant à ca :
 

Code :
  1. #connexion
  2. lftp -u $USER,$PASS $HOST/$DIR <<END_SCRIPT
  3. mirror ./ ./ --Remove-source-files
  4. quit
  5. END_SCRIPT


 
sputnick, est ce que tu connais l'option -c de mirror
dois je l'utiliser ? (je n'ai pas très bien compris ce qu'elle faisait)
 
on va déjà voir ce que ca donne
 
 

Reply

Marsh Posté le 06-12-2007 à 09:10:25   

Reply

Marsh Posté le 07-12-2007 à 00:39:01    

Non je ne connais pas cette option.
Si ça peux te servir, voici mon script de backup via lftp, avec fonction pour effacer les archives de plus de 15 jours.
 
http://stardust.3.free.fr/guest/b4z44r/back-lftp.sh

Reply

Marsh Posté le 10-12-2007 à 15:40:12    

pas de plantage depuis une semaine pratiquement  
je considere que c'est résolu
 
merci à tous ;)

Reply

Sujets relatifs:

Leave a Replay

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