Question

Nous avons une configuration du système ftp pour surveiller / téléchargement depuis les serveurs ftp distants qui ne sont pas sous notre contrôle. Le script se connecte au ftp distant, et saisit les noms de fichier des fichiers sur le serveur, nous vérifions ensuite si ses quelque chose qui a déjà été téléchargé. Si elle n'a pas été téléchargé nous télécharger le fichier et l'ajouter à la liste.

Nous avons récemment couru dans un problème, où une personne sur le côté ftp distant, copie dans un seul fichier massif (> 1 Go), le script se réveillera voir un nouveau fichier et commencer à télécharger le fichier qui est copié dans.

Quelle est la meilleure façon de le vérifier? Je pensais à saisir la taille du fichier d'attendre quelques secondes vérifiant la taille du fichier à nouveau et voir si elle a augmenté, si elle n'a pas nous le télécharger. Mais puisque le temps est de la préoccupation, nous ne pouvons pas attendre quelques secondes pour chaque jeu de fichiers unique et voir si elle est la taille du fichier a augmenté.

Quelle serait la meilleure façon d'aller à ce sujet, en tout se fait via pythons ftplib, comment pouvons-nous faire à part en utilisant la méthode ci-dessus.

Encore une fois, permettez-moi de répéter cela, nous avons 0 contrôle sur les sites ftp distant.

Merci.

Update1:

Je pensais que si j'ai essayé de le renommer ... puisque nous avons les autorisations sur le ftp, si le téléchargement de fichiers est en cours serait la commande de changement de nom l'échec?

Nous n'avons pas de véritables options ici ... nous faire?

MAJ2: Eh bien, voici quelque chose d'intéressant quelques-uns des FTPS nous avons testées semblent affecter automatiquement l'espace une fois que le transfert commence.

par exemple. Si je transférer un fichier de 200 Mo sur le serveur ftp. Alors que le transfert est actif si je me connecte au serveur ftp et faire une taille alors que le téléchargement se passe. Il montre 200mb pour la taille. Même si le fichier est seulement comme 10% complet.

Autorisations semblent également être mis au hasard le serveur FTP qui est livré avec IIS définit les autorisations Une fois le fichier terminé la copie. Alors que certains des autres serveurs ftp anciens placèrent dès que vous envoyez le fichier.

: '(

Était-ce utile?

La solution

« Au diable les torpilles! En avant! »

Il suffit de télécharger le fichier. S'il est un grand fichier, puis après le téléchargement terminé attendre aussi longtemps qu'il est raisonnable pour votre scénario et continuer le téléchargement à partir du point où il est arrêté. Répétez jusqu'à ce qu'il n'y a pas plus de choses à télécharger.

Autres conseils

Comme vous dites que vous avez 0 contrôle sur les serveurs et ne peut pas faire de vos clients affichent des fichiers de déclenchement comme suggéré par S. Lott, vous devez faire face à la solution imparfaite et la transmission de dossier incomplet des risques, peut-être en attente pendant un certain temps et comparer la taille des fichiers avant et après.

Vous pouvez essayer de renommer comme vous le suggérez, mais comme vous avez 0 contrôle, vous ne pouvez pas être sûr que le serveur ftp administrateur (ou son successeur) ne change pas les plates-formes ou des serveurs ftp ou limite de vos droits d'accès.

Désolé.

Si vous avez affaire à plusieurs fichiers, vous pouvez obtenir la liste de toutes les tailles à la fois, attendez dix secondes, et voir quels sont les mêmes. Quel que soit le sont toujours les mêmes devraient être en sécurité à télécharger.

Vous ne pouvez pas savoir quand la copie du système d'exploitation est fait. Il pourrait ralentir ou attendre.

Pour plus de certitude absolue, vous avez vraiment besoin de deux fichiers.

  • Le fichier massif.
  • Et un fichier déclencheur minuscule.

Ils peuvent jouer avec le fichier massif tout ce qu'ils veulent. Mais quand ils touchent le fichier déclencheur, vous téléchargez les deux.


Si vous ne pouvez pas obtenir un déclencheur, vous devez équilibrer le temps nécessaire au sondage par rapport au temps nécessaire pour télécharger.

Pour ce faire.

  1. Obtenez une liste. Vérifiez horodatages.

  2. Vérifiez la taille par rapport précédent la taille du fichier. Si la taille est même pas proche, il est en cours de copie en ce moment. Attendez; boucle sur cette étape jusqu'à ce que la taille est proche de la taille initiale.

  3. Alors que vous n'êtes pas fait:

    a. Obtenez le fichier.

    b. Obtenez une liste AGAIN. Vérifiez la taille de la nouvelle liste, Annonce précédente et votre fichier. S'ils sont d'accord: vous avez terminé. Si elles ne sont pas d'accord: fichier a été modifié pendant que vous téléchargez; vous n'êtes pas fait.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top