Forum Programmation.shell Script récupération nouveaux fichiers sur ftp

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
27
nov.
2016

Bonjour.

Je cherche à faire un script à lancer via crontab, qui téléchargerai les fichiers et dossiers présents sur un serveur ftp.
Ce script tournera sur un nas D'link 320L.

Jusque là rien de compliqué, le souci c'est que je devrai déplacer certains de ces fichiers une fois téléchargés, et que j'aimerai que le script ne me les téléchargent pas a nouveau.

J'ai eu 2 idées, soit prendre les fichiers dont la date est celle de la veille uniquement, et le lancer une fois par jour, soit faire un fichier " liste des fichiers téléchargés" et de comparer chaque fichier ensuite…

Mes compétences sont assez basiques.

L'idéal serait même que, si le fichier/dossier n'est plus sur le ftp, il soit déplacé dans un second dossier en local ( à trier ).

Au pire, et si c'est nécessaire, le script pourra être lancé depuis un raspberry

Merci d'avance pour vos pistes.

  • # FTP obligatoirement ?

    Posté par  . Évalué à 2.

    Rsync semble plus adapté dans ton cas non ?

    • [^] # Re: FTP obligatoirement ?

      Posté par  . Évalué à 2.

      Je n'ai aucun accès ssh au serveur sur lequel sont mes fichiers/dossiers malheureusement..

  • # Exemple

    Posté par  . Évalué à 1.

    Je m'étais servi de ça, mais si je déplace mon fichier il est retéléchargé lors de l'execution suivante.

    http://www.crazyws.fr/dev/systeme/synchroniser-votre-seedbox-avec-votre-nas-ou-votre-ordinateur-6NGGE.html

  • # lftp

    Posté par  . Évalué à 1.

    Je te conseille de scripter cela avec lftp.

    Exemple de déplacement de fichier après téléchargement d'un fichier donné $FILE:

    lftp $HOST -e 'get $FILE && mv $FILE backup/'
    

    Si tu veux éviter de faire une première requête de récupération du nom des fichier tu peux tenter de boucler avec la commande repeat:

     lftp $HOST -e 'repeat -d 60 "cls -1 | head -1 | xargs ..."'
    

    Voir aussi dans le man, la commande "surpuissante" mirror.

    À voir ce qui parait le plus simple ensuite.

    P.S. Utilise les bookmarks de lftp, cela te permet d'éviter les identifiants en clair dans ta commande (le format .netrc est aussi supporté au besoin).

    • [^] # Re: lftp

      Posté par  . Évalué à 1.

      Merci.
      J'avais effectivement vu l'option mirror, mais elle ne me correspond pas. En effet je ne veux rien supprimer sur le ftp via ce script, mais je veux qu'un fichier téléchargé hier, mais déplacé depuis dans un autre dossier ( manuellement ) ne soit ni re-téléchargé sur le nas, ni supprimé du ftp.

      Je ne crois pas que cela corresponde, si?

      • [^] # Re: lftp

        Posté par  . Évalué à 1.

        Je pense avoir trouvé, avec lftp et l'option --newer-than=now-1day.

        Je fais quelques tests et je vous confirmerai ça !

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.