FTP를 통한 파일 조정


11

Windows 데스크톱에서 원격 서버의 대용량 로그 파일에 액세스하려고합니다. 나는 단지 이 원격 시스템이 아닌 SSH 액세스에 FTP 액세스 할 수 있습니다.

현재 WinSCP를 사용하여 전체 파일을 FTP로 가져오고 있습니다. 이것은 매번 전체 파일을 전송해야 함을 의미합니다. 그러나 로그 파일이기 때문에 마지막 몇 줄만 필요할 것입니다.

대역폭이 심각하게 제한되어 전체 파일을 전송하는 데 몇 분이 걸리므로 특히 실망 스럽습니다.

쉘 액세스 권한이 있으면 tail -100마지막 100 줄을 얻는 것과 같은 것을 사용하여 쉽게 얻을 수 있습니다 .

FTP를 통해 이것을 수행하는 솔루션을 찾고 싶습니다. 연속 테일 일 필요는 없으며 일회성이면 충분합니다.

답변:


8

당신이하고 싶은 일은 확실히 FTP로 할 수 있습니다. 기술적으로 파일 다운로드 중단을 재개 할 때 FTP 클라이언트가하는 것과 동일합니다.

사용자 관점에서 볼 때 FTP 클라이언트가 지정된 수의 후행 바이트 만 명시 적으로 다운로드 할 수 있는지 여부는 알 수 없습니다.

그러나 일부 FTP 클라이언트에서는 이전에 다운로드 한 파일의 새로운 후행 컨텐츠를 다운로드 할 수 있습니다.

특히 WinSCP에서는 로그 파일 다운로드 만 시작하면됩니다. 그런 다음 덮어 쓰기 확인 프롬프트 에서 다시 시작 ( 아니요 버튼 의 드롭 다운 메뉴에 있음 )을 선택하십시오. 소스 파일이 대상 파일보다 큰 경우에만이 옵션을 사용할 수 있습니다.

로그의 마지막 몇 줄만 실제로 다운로드하려면 다운로드를 시작하기 전에 로그 파일보다 크기가 작은 더미 로컬 파일을 만들어 WinSCP를 속일 수 있습니다.

위의 트릭을 쉽게 자동화 할 수도 있습니다.

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

에 대한 대안 은 Windows 시스템에서 큰 파일을 빠르게 작성 하시겠습니까?를fsutil 참조하십시오 .

더 많은 노력으로 스크립트를 수정하여 먼저 로그 파일 크기를 확인하고 로그 파일보다 몇 킬로바이트 작은 더미 파일 크기를 자동으로 계산할 수 있습니다.


0

WinSCP를 사용 하여이 작업을 수행하는 방법을 모르고 실제로 가능하지는 않지만 일반적으로 REST 명령 을 사용할 수 있어야합니다 . RFC 3659를 참조하십시오 . 파일에서 늦게 다운로드를 시작할 수 있는지 또는 이미 마커를 받았는지 여부는 확실하지 않습니다. RFC 3659는 이것이 적어도 STREAM 모드에서 가능하다는 것을 나타냅니다.

FILE STRUcture를 통한 STREAM 모드 전송은 데이터 자체 외에 재시작 마커가 전송되지 않은 경우에도 재시작 될 수 있습니다. 필요한 경우 RESTART (REST) ​​명령 및 표준 파일 전송 명령 중 하나와 함께 SIZE 명령을 사용하여 수행됩니다.


0

귀하의 요구를 지원하는 소프트웨어에 대해서는 들어 본 적이 없습니다. 그러나 만약 당신이 프로그래머라면, 당신은 이것을 Perl로 작성하는 방법을 이해해야합니다.

여기에서 모든 파일을 얻는 방법에 대한 예를 찾았습니다. 이는 해결 방법은 아니지만 http://www.perlmonks.org/?node_id=907019 를 이해하는 데 도움이됩니다 .

라이브러리 Net :: FTP에 대한 도움말 : http://search.cpan.org/dist/libnet/Net/FTP.pm

이것을 사용하여 서버에 대한 ftp 연결을 열 수 있습니다 (첫 번째 예) 인증을하십시오 (첫 번째 예)

두 번째 URL은 메소드를 사용하여 파일의 마지막 부분을 얻는 방법을 도와줍니다. coursor 원하는 파일에서 읽기 시작-> 읽기 (BUFFER, SIZE [, TIMEOUT]) 작은 SIZE 부분을 BUFFER 변수로 직접 읽습니다.

또 다른 기능 : length (BUFFER)는 얼마나 많은 데이터를 얻었는지 알려줍니다. ZERO 인 경우 EOF 인쇄 ( "$ BUFFER \ n") 간단한 인쇄 버퍼 내용에 도달했을 가능성이 있습니다.

이것은 완전한 해결책이 아니라 수행 방법입니다. 내가이 모든 것을 쓰는 한가지 이유는 아마도 당신의 작업을위한 소프트웨어가 준비되어 있지 않기 때문입니다.

해당 프로그램을 작성하는 방법을 모른다면 수퍼 유저가 아닌 stackoverflow.com으로 문의하십시오. 도움이 필요한 많은 프로그래머들이 있습니다.

가능하다면 ftp 사이트가 다운로드 재개를 지원하는지 확인하십시오. Whithout 파일의이 읽기 끝 부분은 불가능합니다.

다른 부분 해결 방법은 로그 파일 순환 일 수 있습니다 (하루 또는 한 시간에 한 파일). 이것은 로그 파일이 얼마나 빨리 커지는가에 달려 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.