Đuôi một tập tin qua FTP


11

Tôi đang cố gắng truy cập các tệp nhật ký lớn trên một máy chủ từ xa từ máy tính để bàn Windows của tôi. Tôi chỉ có quyền truy cập FTP vào máy từ xa này, không truy cập SSH.

Hiện tại, tôi đang sử dụng WinSCP để kéo toàn bộ tệp xuống qua FTP. Điều này có nghĩa là tôi phải chuyển toàn bộ tập tin mỗi lần. Tuy nhiên, do đây là một tệp nhật ký nên tôi chỉ cần vài dòng cuối cùng.

Điều này đặc biệt khó chịu, vì băng thông của tôi bị hạn chế nghiêm trọng, vì vậy việc chuyển toàn bộ tệp mất vài phút.

Nếu tôi có quyền truy cập shell, điều này có thể dễ dàng đạt được bằng cách sử dụng thứ gì đó như tail -100để có được 100 dòng cuối cùng.

Tôi muốn tìm một giải pháp để thực hiện điều này thông qua FTP. Lưu ý rằng nó không phải là một cái đuôi liên tục, chỉ cần một lần là đủ.

Câu trả lời:


8

Những gì bạn muốn làm, chắc chắn có thể được thực hiện với FTP. Về mặt kỹ thuật, nó giống nhau, bất kỳ ứng dụng khách FTP nào cũng vậy, khi tiếp tục tải xuống tệp bị gián đoạn.

Mặc dù từ góc độ người dùng, tôi không biết, nếu có bất kỳ máy khách FTP nào hỗ trợ tải xuống rõ ràng chỉ với số lượng byte được cho.

Nhưng một số máy khách FTP chắc chắn sẽ cho phép bạn tải xuống nội dung mới của tệp mà bạn đã tải xuống trước đó.

Riêng với WinSCP, chỉ cần bắt đầu tải xuống tệp nhật ký. Sau đó, trên lời nhắc xác nhận Ghi đè , chọn Tiếp tục (trong menu thả xuống của nút Không ). Lưu ý rằng tùy chọn rõ ràng là có sẵn, chỉ khi tệp nguồn lớn hơn tệp đích.

Nếu bạn thực sự chỉ muốn tải xuống một vài dòng nhật ký cuối cùng, bạn có thể lừa WinSCP, bằng cách tạo một tệp cục bộ giả với kích thước nhỏ hơn một chút so với tệp nhật ký trước khi bạn bắt đầu tải xuống.

Bạn cũng có thể dễ dàng tự động hóa thủ thuật trên:

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

Để biết các lựa chọn thay thế fsutil, hãy xem Nhanh tạo tập tin lớn trên hệ thống windows?

Với nhiều nỗ lực hơn, bạn có thể sửa đổi tập lệnh để kiểm tra kích thước tệp nhật ký trước tiên và tự động tính toán kích thước tệp giả nhỏ hơn vài kilobyte so với kích thước nhật ký.


0

Tôi không biết làm thế nào bạn có thể làm điều này bằng WinSCP và thực sự có thể không thể, nhưng nói chung, bạn sẽ có thể sử dụng lệnh REST . Xem RFC 3659 . Tuy nhiên, tôi không rõ liệu bạn có thể bắt đầu tải xuống từ cuối tệp hay không, hoặc liệu bạn có cần phải nhận được các điểm đánh dấu hay không. RFC 3659 chỉ ra điều này là có thể, ít nhất là trong chế độ STREAM, mặc dù:

Chuyển chế độ STREAM với FILE STRUcture có thể được khởi động lại ngay cả khi không có dấu hiệu khởi động lại nào được chuyển vào ngoài dữ liệu. Điều này được thực hiện bằng cách sử dụng lệnh SIZE, nếu cần, kết hợp với lệnh RESTART (REST) ​​và một trong các lệnh truyền tệp tiêu chuẩn.


0

Tôi không nghe về bất kỳ phần mềm nào hỗ trợ nhu cầu của bạn. Nhưng nếu bạn là lập trình viên, shou nên hiểu cách viết này trong Perl.

Ở đây tôi tìm thấy ví dụ làm thế nào để có được tất cả các tập tin. Đây không phải là quyết định của bạn, nhưng nó giúp bạn hiểu cách thực hiện: http://www.perlmonks.org/?node_id=907019

khác, trợ giúp cho thư viện Net :: FTP: http://search.cpan.org/dist/libnet/Net/FTP.pm

bằng cách này, bạn có thể mở kết nối ftp đến máy chủ (ví dụ đầu tiên) tạo ủy quyền (ví dụ đầu tiên)

URL thứ hai giúp bạn cách lấy phần cuối của tệp bằng các phương thức: -> ascii đặt chế độ truyền thành ascii vì đây là logfile -> size (FILE) lấy kích thước tệp để đếm nơi bạn nên bắt đầu -> khởi động lại (WHERE) coursor từ đâu trong tệp bạn muốn bắt đầu đọc -> đọc (BUFFER, SIZE [, TIMEOUT]) đọc trực tiếp phần SIZE nhỏ vào biến BUFFER

các chức năng khác: chiều dài (BUFFER) cho bạn biết bạn nhận được bao nhiêu dữ liệu. Nếu là ZERO, bạn có thể đạt được bản in EOF ("$ BUFFER \ n") nội dung bộ đệm in đơn giản ra màn hình

Lưu ý, đây không phải là giải quyết hoàn toàn mà là một cách làm. Chỉ có một lý do tại sao tôi viết tất cả những điều này là có lẽ không có phần mềm nào sẵn sàng cho nhiệm vụ của bạn.

Nếu bạn không biết cách viết chương trình đó, chỉ cần hỏi trên stackoverflow.com, không phải siêu người dùng. Có rất nhiều lập trình viên đã sẵn sàng để được giúp đỡ.

Nếu có thể, hãy kiểm tra trang web ftp của bạn có hỗ trợ tải xuống lại không. Không có phần đọc kết thúc này của tập tin là không thể.

Một độ phân giải khác có thể là xoay vòng tệp nhật ký, một tệp một ngày hoặc một giờ. điều này phụ thuộc vào cách tệp nhật ký phát triển nhanh.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.