FTP Üzerinden Dosya Dosyalama


11

Windows masaüstümden uzak sunucudaki büyük günlük dosyalarına erişmeye çalışıyorum. Ben sadece bu uzak makinede değil SSH erişimi FTP erişimi vardır.

Şu anda, tüm dosyayı FTP üzerinden aşağı çekmek için WinSCP kullanıyorum. Bu, her seferinde tam dosyayı aktarmam gerektiği anlamına gelir. Ancak, bir günlük dosyası göz önüne alındığında, sadece son birkaç satıra ihtiyacım var.

Bant genişliğim ciddi şekilde sınırlı olduğundan bu özellikle sinir bozucu, bu nedenle tüm dosyayı aktarmak birkaç dakika sürüyor.

Kabuk erişimine sahip olsaydım, bu tail -100son 100 satırı elde etmek gibi bir şey kullanarak kolayca elde edilebilirdi .

Bunu FTP üzerinden gerçekleştirmek için bir çözüm bulmak istiyorum. Sürekli bir kuyruk olması gerekmediğine dikkat edin, sadece bir kerelik yeterli olacaktır.

Yanıtlar:


8

Yapmak istediğiniz şey kesinlikle FTP ile yapılabilir. Teknik olarak, kesilen bir dosya indirmeye devam ederken herhangi bir FTP istemcisinin yaptığı aynıdır.

Kullanıcı açısından bakıldığında, herhangi bir FTP istemcisinin yalnızca verilen sondaki bayt sayısının açık bir şekilde indirilmesini destekleyip desteklemediğini bilmiyorum.

Ancak bazı FTP istemcileri, daha önce indirdiğiniz dosyanın yeni son içeriğini indirmenize kesinlikle izin verecektir.

Özellikle WinSCP ile bir günlük dosyası indirmesi başlatın. Ardından, Üzerine yaz onay isteminde , Devam Et'i seçin ( Hayır düğmesinin açılır menüsünde ). Bu seçeneğin, yalnızca kaynak dosya hedef dosyadan büyükse açıkça kullanılabileceğini unutmayın.

Günlüğün yalnızca son birkaç satırını gerçekten indirmek istiyorsanız, indirmeyi başlatmadan önce günlük dosyasından biraz daha küçük boyutta bir kukla yerel dosya oluşturarak WinSCP'yi aldatabilirsiniz.

Yukarıdaki numarayı kolayca otomatikleştirebilirsiniz:

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

Alternatifleri için fsutil, bkz. Windows sisteminde hızlı bir şekilde büyük dosya oluşturma?

Daha fazla çaba ile, günlük dosyası boyutunu kontrol etmek ve günlük boyutundan birkaç kilobayt daha küçük olan kukla dosya boyutunu otomatik olarak hesaplamak için komut dosyasını değiştirebilirsiniz.


0

WinSCP kullanarak bunu nasıl yapabileceğinizi bilmiyorum ve gerçekten mümkün olmayabilir, ancak genel olarak REST komutunu kullanabilmeniz gerekir . Bkz. RFC 3659 . Yine de, dosyanın sonundan indirmeye başlayıp başlayamayacağınız veya işaretçileri zaten almanız gerekip gerekmediği açık değildir. RFC 3659, bunun en azından STREAM modunda mümkün olduğunu gösterir, ancak:

Verilerin kendisine ek olarak hiçbir yeniden başlatma işareti aktarılmamış olsa da, DOSYA YAPISI ile STREAM modu aktarımları yeniden başlatılabilir. Bu, gerekiyorsa, RESTART (REST) ​​komutu ve standart dosya aktarım komutlarından biri ile birlikte SIZE komutu kullanılarak yapılır.


0

İhtiyaçlarınızı destekleyen herhangi bir yazılım duymadım. Ancak programcıysanız, bunu Perl'de nasıl yazacağınızı anlamalısınız.

Burada nasıl tüm dosyayı almak için örnek bulundu. Bu sizin çözümünüz değil, ancak nasıl yapılacağını anlamanıza yardımcı olur: http://www.perlmonks.org/?node_id=907019

başka bir, kütüphane Net :: FTP için yardım: http://search.cpan.org/dist/libnet/Net/FTP.pm

bunu kullanarak sunucuya ftp bağlantısını açabilirsiniz (ilk örnek) yetkilendirme yapın (ilk örnek)

ikinci URL yöntemleri kullanarak dosyanın son bölümünü almak için size yardımcı olur: -> ascii transfer dosyasını ascii olarak ayarlayın çünkü bu günlük dosyası -> boyut (DOSYA) nerede başlamanız gerektiğini saymak için dosya boyutu olsun -> yeniden başlat (WHERE) set dosyası imleci burada okumak istediğiniz okumaya başlayın -> okuyun (BUFFER, SIZE [, TIMEOUT]) küçük SIZE kısmını doğrudan BUFFER değişkenine okuyun

başka işlevler: uzunluk (BUFFER) size ne kadar veri aldığınızı söyler. SIFIR ise, EOF baskı ("$ BUFFER \ n") basit baskı tamponu içeriğine ekrana ulaştınız

Bu tamamen çözüm değil, nasıl yapılacağına dikkat edin. Tüm bunları yazmamın tek nedeni, muhtemelen göreviniz için hazır bir yazılım olmamasıdır.

Bu programı nasıl yazacağınızı bilmiyorsanız, superuser yerine stackoverflow.com adresine sorun. Yardıma hazır birçok programcı var.

Mümkünse, ftp sitenizin indirme işlemine devam etmeyi desteklediğini kontrol edin. Dosyanın bu okuma sonu kısmı imkansızdır.

Başka bir kısmi çözüm, günlük veya saatte bir dosya olmak üzere günlük dosyası döndürme olabilir. bu günlük dosyasının ne kadar hızlı büyüdüğüne bağlıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.