로그 파일을 지속적으로 백업하는 방법은 무엇입니까?

로그 파일을 지속적으로 백업하는 방법은 무엇입니까?

Linux에는 각각 약 41MB의 로그 파일을 생성하는 일부 응용 프로그램이 있습니다. 41MB 파일이 완료되면 애플리케이션이 에서 로 전환되어 log.1덮어 log.2쓰기를 시작합니다.log.2log.1

log.2새 파일 크기가 1MB를 초과할 때마다 다른 파일( )을 백업(gzip 및 다른 위치에 저장)하는 방식으로 이러한 파일을 백업하고 싶습니다 log.1.

나는 파일이 41MB에 도달할 때마다 파일을 백업하는 스크립트를 사용해 왔지만 여기서 문제는 데이터가 여전히 매우 빠른 속도로 동일한 파일에 기록되는 동안 때때로 41MB 파일 백업이 스크립트에 의해 처리된다는 것입니다. 몇 초 동안 로그 데이터가 손실되었기 때문에 새 파일이 1MB 정도에 도달했을 때 다른 파일 쓰기가 완료되었는지 확인하기 위해 다른 파일을 백업하는 대체 방법을 시도하고 있습니다.

어떻게 할 수 있는지 아시나요?

답변1

이는 logrotate를 통해 수행할 수 있습니다. 아래 아파치 로그 예를 참조하세요.

1단계# 먼저 logrotate가 시스템에 설치되어 있는지 확인하세요. 거의 모든 Linux 배포판에서 기본적으로 사용할 수 있습니다.

2단계#은 /etc/logrotate_apache.conf다음과 같이 생성됩니다.

#-------------------------------------------------------------------------------------
/var/log/httpd/*log {
    missingok
    minsize 1M
    create
    compress
    rotate 1
    lastaction
        /sbin/service httpd reload > /dev/null 2>/dev/null || true
        Log_dir="/var/log/httpd/Apache_$(date +%F)/"
        # move to other location
        [[ ! -d "${Log_dir}" ]] && /bin/mkdir "${Log_dir}" &&  /bin/mv /var/log/httpd/*.gz "${Log_dir}"
    endscript
}

# system-specific logs may be also be configured here.
#-------------------------------------------------------------------------------------

3단계# 다음과 같이 Cron 작업을 설정합니다.

00 * * * * /usr/sbin/logrotate -f /etc/logrotate_apache.conf

답변2

당신은 시도 할 수 있습니다로그 회전, 몇 가지 예를 언급했습니다.여기

이것크기옵션을 사용하면 로그가 지정된 크기(예: 41MB)에 도달하면 로그를 회전할 수 있습니다.
사용백 스핀회전된 로그 파일을 다른 위치로 전송하는 데 사용할 수 있는 사용자 정의 스크립트를 실행하는 옵션입니다.

관련 정보