Coda di un file su FTP


11

Sto tentando di accedere a file di registro di grandi dimensioni su un server remoto dal mio desktop di Windows. Ho solo l' accesso FTP a questa macchina remota, non l'accesso SSH.

Al momento, sto usando WinSCP per scaricare l'intero file su FTP. Questo significa che devo trasferire il file completo ogni volta. Tuttavia, dato che è un file di registro, probabilmente avrò bisogno solo delle ultime righe.

Ciò è particolarmente frustrante, poiché la mia larghezza di banda è fortemente limitata, quindi il trasferimento dell'intero file richiede alcuni minuti.

Se avessi accesso alla shell questo potrebbe essere facilmente ottenuto usando qualcosa di simile tail -100per ottenere le ultime 100 righe.

Vorrei trovare una soluzione per eseguire ciò tramite FTP. Nota che non deve essere una coda continua, sarebbe sufficiente una sola volta.

Risposte:


8

Quello che vuoi fare, può sicuramente essere fatto con FTP. Tecnicamente è la stessa cosa che fa qualsiasi client FTP quando riprende un download di file interrotto.

Anche se dal punto di vista dell'utente, non so se un client FTP supporta un download esplicito di un determinato numero di byte finali.

Ma alcuni client FTP ti consentiranno sicuramente di scaricare nuovi contenuti finali di file che hai scaricato in precedenza.

In particolare con WinSCP, basta avviare un download del file di registro. Quindi, al prompt di conferma della sovrascrittura , selezionare Riprendi (si trova nel menu a discesa del pulsante No ). Si noti che l'opzione è ovviamente disponibile, solo se il file di origine è più grande del file di destinazione.

Se vuoi davvero scaricare solo le ultime righe del registro, puoi imbrogliare WinSCP, creando un file locale fittizio con una dimensione un po 'più piccola del file di registro prima di iniziare il download.

Puoi anche automatizzare facilmente il trucco di cui sopra:

fsutil file createnew mylog.log 100000000
winscp.com /command "open mysession" "get -resume /path_to_log/mylog.log" "exit"

Per alternative a fsutil, vedi Creare rapidamente file di grandi dimensioni su un sistema Windows?

Con uno sforzo maggiore è possibile modificare lo script per verificare prima la dimensione del file di registro e calcolare automaticamente la dimensione del file fittizio di alcuni kilobyte più piccola della dimensione del registro.


0

Non so come puoi farlo usando WinSCP, e in effetti potrebbe non essere possibile, ma in generale, dovresti essere in grado di usare il comando REST . Vedi RFC 3659 . Tuttavia, non mi è chiaro se è possibile iniziare a scaricare in ritardo dal file o se è necessario aver già ricevuto gli indicatori. RFC 3659 indica che ciò è possibile, almeno in modalità STREAM, sebbene:

I trasferimenti in modalità STREAM con FILE STRUcture possono essere riavviati anche se nessun marker di riavvio è stato trasferito in aggiunta ai dati stessi. Questo viene fatto utilizzando il comando SIZE, se necessario, in combinazione con il comando RESTART (REST) ​​e uno dei comandi di trasferimento file standard.


0

Non ho sentito parlare di alcun software che supporti le tue esigenze. Ma se sei un programmatore, dovresti capire come scrivere questo in Perl.

Qui ho trovato un esempio su come ottenere tutti i file. Questa non è la tua decisione, ma ti aiuta a capire come fare: http://www.perlmonks.org/?node_id=907019

un altro, aiuto per la libreria Net :: FTP: http://search.cpan.org/dist/libnet/Net/FTP.pm

usando questo è possibile aprire la connessione ftp al server (primo esempio) autorizzare (primo esempio)

il secondo URL ti aiuta a ottenere l'ultima parte del file usando i metodi: -> ascii imposta la modalità di trasferimento su ascii perché si tratta di file di registro -> size (FILE) ottieni la dimensione del file per il conteggio da dove dovresti iniziare -> riavvia (WHERE) set file cursore da dove nel file si desidera iniziare a leggere -> leggere (BUFFER, SIZE [, TIMEOUT]) leggere direttamente la piccola parte SIZE nella variabile BUFFER

un'altra funzione: lunghezza (BUFFER) indica quanti dati ottieni. Se è ZERO, hai raggiunto il contenuto del buffer di stampa semplice EOF ("$ BUFFER \ n") sullo schermo

Nota, questa non è una risoluzione completa ma un modo per fare. Solo uno dei motivi per cui scrivo tutto questo è che probabilmente non ci sono software pronti per il tuo compito.

Se non sai come scrivere quel programma, chiedi semplicemente su stackoverflow.com, non su superutente. Esistono molti programmatori pronti per l'aiuto.

Se possibile, controlla che il tuo sito ftp supporti la ripresa del download. Senza questa lettura, la parte finale del file è impossibile.

Un'altra risoluzione parziale può essere la rotazione del file di registro, un file al giorno o un'ora. questo dipende dalla velocità con cui cresce il file di registro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.