Tailing File melalui FTP

11

Saya mencoba mengakses file log besar di server jauh dari desktop Windows saya. Saya hanya memiliki akses FTP ke mesin jarak jauh ini, bukan akses SSH.

Saat ini, saya menggunakan WinSCP untuk menarik seluruh file ke bawah melalui FTP. Ini berarti saya harus mentransfer file lengkap setiap saat. Namun, mengingat itu file log saya cenderung hanya perlu beberapa baris terakhir.

Ini sangat menyebalkan, karena bandwidth saya sangat terbatas, sehingga mentransfer seluruh file membutuhkan beberapa menit.

Jika saya memiliki akses shell ini dapat dengan mudah dicapai dengan menggunakan sesuatu seperti tail -100untuk mendapatkan 100 baris terakhir.

Saya ingin mencari solusi untuk melakukan ini melalui FTP. Perhatikan bahwa itu tidak harus berupa ekor yang terus menerus, cukup satu kali saja sudah cukup.

jwa
sumber

Jawaban:

8

Apa yang ingin Anda lakukan, pasti bisa dilakukan dengan FTP. Secara teknis sama, apa yang dilakukan oleh klien FTP, saat melanjutkan unduhan file yang terputus.

Meskipun dari perspektif pengguna, saya tidak tahu, apakah ada klien FTP yang mendukung unduhan eksplisit hanya dengan jumlah trailing byte yang diberikan.

Tetapi beberapa klien FTP pasti akan memungkinkan Anda untuk mengunduh konten tambahan dari file yang telah Anda unduh sebelumnya.

Khususnya dengan WinSCP, cukup lakukan pengunduhan file log. Kemudian, pada konfirmasi konfirmasi Timpa , pilih Lanjutkan (ini ada di menu drop-down tombol No ). Perhatikan bahwa opsi ini jelas tersedia, hanya jika file sumber lebih besar dari file tujuan.

Jika Anda benar-benar ingin mengunduh hanya beberapa baris terakhir dari log, Anda dapat menipu WinSCP, dengan membuat file lokal dummy dengan ukuran sedikit lebih kecil daripada file log sebelum Anda memulai unduhan.

Anda juga dapat dengan mudah mengotomatiskan trik di atas:

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

Untuk alternatif fsutil, lihat cepat Membuat file besar di sistem windows?

Dengan upaya lebih, Anda dapat memodifikasi skrip untuk memeriksa terlebih dahulu ukuran file log dan secara otomatis menghitung ukuran file dummy beberapa kilobyte lebih kecil dari ukuran log.

Martin Prikryl
sumber
0

Saya tidak tahu bagaimana Anda bisa melakukan ini menggunakan WinSCP, dan memang itu tidak mungkin, tetapi secara umum, Anda harus dapat menggunakan perintah REST . Lihat RFC 3659 . Tidak jelas bagi saya apakah Anda dapat mulai mengunduh dari akhir file, atau apakah Anda harus sudah menerima spidol. RFC 3659 menunjukkan ini mungkin, setidaknya dalam mode STREAM, meskipun:

Transfer mode STREAM dengan STRU FILE dapat dimulai kembali meskipun tidak ada penanda mulai ulang yang ditransfer selain data itu sendiri. Ini dilakukan dengan menggunakan perintah SIZE, jika diperlukan, dikombinasikan dengan perintah RESTART (REST), dan salah satu perintah transfer file standar.

ChrisInEdmonton
sumber
0

Saya tidak mendengar tentang perangkat lunak apa pun yang mendukung kebutuhan Anda. Tetapi jika Anda seorang programmer, Anda harus mengerti bagaimana menulis ini di Perl.

Di sini saya menemukan contoh cara mendapatkan semua file. Ini bukan tekad Anda, tetapi ini membantu Anda memahami bagaimana melakukannya: http://www.perlmonks.org/?node_id=907019

lain, bantuan untuk perpustakaan Net :: FTP: http://search.cpan.org/dist/libnet/Net/FTP.pm

menggunakan ini, Anda dapat membuka koneksi ftp ke server (contoh pertama) membuat otorisasi (contoh pertama)

URL kedua membantu Anda cara mendapatkan bagian terakhir file menggunakan metode: -> ascii atur mode transfer ke ascii karena ini adalah file log -> ukuran (FILE) dapatkan ukuran file untuk menghitung di mana Anda harus mulai -> mulai ulang (WHERE) atur file coursor di mana dari dalam file Anda ingin mulai membaca -> membaca (BUFFER, UKURAN [, TIMEOUT]) langsung membaca bagian UKURAN kecil ke dalam variabel BUFFER

fungsi lain: length (BUFFER) memberi tahu Anda berapa banyak data yang Anda dapatkan. Jika NOL, Anda dapat dengan mudah mencapai konten penyangga cetak EOF print ("$ BUFFER \ n") di layar

Perhatikan, ini bukan penyelesaian sepenuhnya tetapi cara bagaimana melakukannya. Hanya satu alasan mengapa saya menulis ini semua karena mungkin tidak ada perangkat lunak yang siap untuk tugas Anda.

Jika Anda tidak tahu cara menulis program itu, cukup tanyakan di stackoverflow.com, bukan superuser. Ada banyak programmer yang siap membantu.

Jika memungkinkan, periksa situs ftp Anda mendukung pengunduhan unduhan. Tanpa membaca bagian akhir file ini tidak mungkin.

Resolusi parsial lain mungkin rotasi file log, satu file sehari atau satu jam. ini tergantung seberapa cepat file log tumbuh.

Znik
sumber