Supprimer des fichiers sur un ftp après un download reussi - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 11-07-2005 à 10:52:05
Apparemment le petit problème semble plus compliqué que je ne le pensais ou alors personne n'a vu mon sujet !
Marsh Posté le 11-07-2005 à 11:25:05
ReplyMarsh Posté le 11-07-2005 à 11:34:56
Dans tous les cas il faut les télécharger avant.
Voici ce que je propose :
- dans un repertoire temporaire on télécharge tous les logs avec "wget -o wgetlog ftp://[adresseIP]/*.log"
- ensuite on regarde quels sont les fichiers qui sont bien télécharger : examine le fichier log "wgetlog"
pour un fichier téléchargé avec succès :
[date] [débit moyen] - [fichier] saved
donc un fgrep saved puis on récupère le nom du fichier (cut ou awk)
- les fichiers mal téléchargés (ceux qui sont dans le répertoire temporaire sans être dans la liste des fichiers "saved" ) sont retéléchargés.
- comparaison entre fichier log sur le disque et fichier de log dans le répertoire temporaire (md5sum)
- suivant le résultat, on détruit ou non le fichier sur le FTP
Marsh Posté le 11-07-2005 à 11:35:59
Merci pour la réponse _darkalt3_, je commençais à desespérer !
Par contre je ne connais pas du tout PERL, et j'ai déjà du mal à débuter en Shell Script ! Tu penses que ce n'est pas possible à faire en bash ?
EDIT : je viens de lire ta réponse jlighty, je te remercie, j'ai bien compris le process, je vais maintenant essayer de coder tout ça (jusqu'à maintenant j'avais été aidé par un pote mais il est plus dispo !)
Marsh Posté le 11-07-2005 à 13:32:55
perl et librairie Net::FTP
doit bien y avoir un moyen de faire un md5 du fichier avant de le downloader, ensuite tu fais un md5 du fichier downloadé
si les md5 sont pareil, tu supprimes
Marsh Posté le 11-07-2005 à 13:40:01
en effet le md5sum peut être effectué directement depuis le serveur FTP mais pour éviter des problèmes d'accès concurrentiels il faut :
- au moment où l'on doit récupérer la liste des fichiers, les md5 doivent être effectués et enregistrés dans un fichier. D'autre part les fichiers ne doivent pas être modifié par le serveur lors de leur transfert.
Cependant c'est possible avec bash mais c'est largement mieux en Perl
Marsh Posté le 06-07-2005 à 12:48:00
Bonjour,
je débute en Shell Script et j'ai un petit problème à résoudre.
J'ai un script qui tourne en cron et qui me ramène avec wget des fichiers de logs de mon ftp tous les jours.
J'aimerais écrire un nouveau script qui va d'une part vérifier que les fichiers ont bien été ramenés (vu que mon serveur coupe souvent c'est pas forcément le cas vu que c'est lancé automatiquement par cron), et d'autre part supprimer les fichiers de logs sur mon ftp si les fichiers en question existent bien en local. S'ils existent pas, le script doit les ramener et les effacer ensuite.
La où je bloque c'est pour récupérer la liste des fichiers *.log sur mon ftp, et la comparer aux fichiers de log déjà présent sur ma machine locale (afin de déterminer pour chacun si je peux l'effacer ou d'abord le télécharger avant).
Pouvez vous me donner quelques tuyaux ?
Je vous remercie d'avance.
SK.