Logrotate: scp 파일을 다른 위치로 회전

Logrotate: scp 파일을 다른 위치로 회전

특정 크기(예: 50MB)에 도달한 후 회전되어야 하는 로그 파일이 있습니다. 회전 후에는 압축해야 하며 회전된 파일 이름에 날짜를 추가해야 합니다. 이제 회전된 파일을 파일 서버에 복사해야 합니다.

이를 위해 작동하지 않는 구성을 작성했습니다.

/var/log/test.log {
    compress
    missingok
    size 50M
    rotate 6
    create
    dateext
    postrotate
        rsync -avzr /var/log/test.log* REMOTE-HOST:/path/to/directory/
    endscript
}

ls /var/log/test.log*로컬 시스템에서 디렉토리를 실행하면 회전된 파일 test.log-20150211.gz과 빈 파일을 찾을 수 있습니다 test.log. REMOTE-HOST에서 회전된 파일의 압축되지 않은 버전 test.log-20150211과 빈 로그 파일이 발견되었습니다.test.log

제가 걱정되는 것은,

  1. 압축된 로그 파일이 원격 호스트로 전송되지 않는 이유는 무엇입니까?
  2. 회전된 파일만 전송하려면 어떻게 해야 하나요?

편집하다:

또한 로그가 교체된 후 서비스가 syslog중지되었음을 발견했습니다(검사를 실행하여 로깅 프로세스가 중지되었음을 확인 tailf test.log). 서비스를 다시 시작해야 합니다. service syslog restart해당 섹션을 계속 추가해야 하나요 postrotate?

답변1

압축된 로그 파일이 원격 호스트로 전송되지 않는 이유는 무엇입니까?

압축은 거의 마지막에 발생하는 작업이므로 postrotate이 지점에 도달하기 전에도 여전히 발생합니다. logrotate다음 예는 매뉴얼 페이지에서 확인할 수 있습니다 postrotate.

로그 파일이 회전된 후(그러나 이전 버전의 로그가 압축되기 전) /sbin/killall -HUP syslogd[from postrotate script] 명령이 실행됩니다.

rsynccronjob으로 실행하는 것이 좋습니다 .

회전된 파일만 전송하려면 어떻게 해야 하나요?

rsync원본 파일 이름만 일치시키는 것입니다( 더 *많은 문자가 없는 파일도 일치하므로) 더 구체적인 소스 이름을 사용하여 일치 항목을 제거합니다.

rsync -avzr /var/log/test.log-* REMOTE-HOST:/path/to/directory/

관련 정보