Domanda

Abbiamo una configurazione del sistema FTP per il monitoraggio / download dal server FTP remoti che non sono sotto il nostro controllo. Lo script si collega al FTP remoto, e afferra i nomi dei file sul server, abbiamo quindi verificare se la sua qualcosa che è già stato scaricato. Se non è stato scaricato poi scarichiamo il file e aggiungerlo alla lista.

Recentemente abbiamo incontrato un problema, dove qualcuno sul lato FTP remoto, copierà in una massiccia singolo file (> 1 GB) allora lo script si sveglierà vedere un nuovo file e avviare il download del file che viene copiato.

Qual è il modo migliore per controllare questo? Stavo pensando di afferrare la dimensione del file di attesa di pochi secondi controllando la dimensione del file di nuovo e vedere se è aumentato, se non ha poi scaricarlo. Ma dal momento che il tempo è la preoccupazione, non possiamo attendere alcuni secondi per ogni set di singolo file e vedere se è la dimensione del file è aumentato.

Quale sarebbe il modo migliore per andare su questo, al momento tutto è fatto tramite pitoni ftplib, come possiamo fare questo a parte con il metodo di cui sopra.

Ancora una volta mi permetta di ribadire questo, abbiamo 0 controllo sui siti FTP remoto.

Grazie.

Update1:

Stavo pensando che cosa succede se ho provato a rinominarlo ... dal momento che abbiamo autorizzazioni complete sul ftp, se il caricamento di file è in corso sarebbe il comando rename fallire?

Non abbiamo alcuna opzione reale qui ... vero?

UPDATE2: Ebbene ecco qualcosa di interessante alcune delle FTPS che abbiamo testato sul sembrano allocare automaticamente lo spazio una volta che il trasferimento si avvia.

es. Se trasferisco un file di 200MB al server ftp. Mentre il trasferimento è attivo se mi collego al server FTP e fare una dimensione, mentre il caricamento sta accadendo. Essa mostra 200MB per la dimensione. Anche se il file è completa solo come il 10%.

Permessi sembrano anche essere impostato in modo casuale il server FTP che viene fornito con IIS imposta le autorizzazioni dopo che il file è terminata la copia. Mentre alcuni degli altri server ftp anziani impostato non appena si invia il file.

: '(

È stato utile?

Soluzione

“Accidenti i siluri! Avanti tutta!”

Basta scaricare il file. Se si tratta di un file di grandi dimensioni quindi al termine del download attendere finché è ragionevole per lo scenario e continuare il download dal punto si è fermato. Ripetere fino a quando non c'è più roba per scaricare.

Altri suggerimenti

Come dici che hai 0 controllo sui server e non è possibile effettuare i vostri clienti Invia File di trigger come suggerito da S. Lott, si deve trattare con la soluzione imperfetta e la trasmissione di file incompleti rischio, magari in attesa di un po 'e confrontare le dimensioni dei file prima e dopo.

È possibile tenta di rinominare come lei ha suggerito, ma come hai 0 di controllo non si può essere sicuri che il server ftp-amministratore (o loro successore) non cambia piattaforme o server ftp o limita le autorizzazioni.

Siamo spiacenti.

Se avete a che fare con più file, si potrebbe ottenere la lista di tutte le dimensioni in una sola volta, attendere dieci secondi, e vedere che sono lo stesso. Qualunque sia sono ancora lo stesso dovrebbe essere sicuro per scaricare.

Non si può sapere quando la copia del sistema operativo è fatto. Si potrebbe rallentare o aspettare.

Per la certezza assoluta, si ha realmente bisogno di due file.

  • Il file di massa.
  • E un file trigger piccolo.

Si può pasticciare con il file massiccia tutto quello che vogliono. Ma quando toccano il file trigger, si sta scaricando sia.


Se non è possibile ottenere un trigger, è necessario bilanciare il tempo necessario per il polling contro il tempo necessario per scaricare.

Fate questo.

  1. ottenere un elenco. Controllare i timestamp.

  2. Controlla dimensioni vs. precedente dimensione del file. Se la dimensione non è nemmeno vicino, è in corso di copia. Aspettare; loop su questo passaggio finché dimensione è vicino alla dimensione precedente.

  3. Anche se non gioco è fatto:

    a. Ottenere il file.

    b. Ottenere un elenco ANCORA. Controllare la dimensione del nuovo profilo, Annuncio precedente e il file. Se sono d'accordo: il gioco è fatto. Se non sono d'accordo: il file modificato mentre si stava scaricando; non hai finito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top