폴더 아래에 /var/log/httpd
엄청난 용량의 파일이 생성되었습니다!
이 문제를 처리 할 수 있는 오래된 파일을 자동으로 압축하려면 어떤 솔루션을 사용할 수 있습니까 logrotate
?
그렇다면 해당 폴더 아래의 이전 파일을 압축하도록 Linux 시스템을 어떻게 구성할 수 있습니까?
두 번째 질문: 이 파일들은 무엇을 의미하나요?
13:16:50 root@BillGates-Machine:/var/log/httpd # ls -ltr
-rw-r--r-- 1 root root 7612 Jan 30 05:51 ssl_error_log-20160131
-rw-r--r-- 1 root root 16170199 Jan 31 03:29 ssl_request_log-20160131
-rw-r--r-- 1 root root 14677353 Jan 31 03:29 ssl_access_log-20160131
-rw-r--r-- 1 root root 425621646 Jan 31 03:38 access_log-20160131
-rw-r--r-- 1 root root 77267 Jan 31 03:38 error_log-20160131
-rw-r--r-- 1 root root 11233 Feb 7 03:43 ssl_error_log-20160207
-rw-r--r-- 1 root root 16398688 Feb 7 03:44 ssl_request_log-20160207
-rw-r--r-- 1 root root 14867381 Feb 7 03:44 ssl_access_log-20160207
-rw-r--r-- 1 root root 471057664 Feb 7 03:48 access_log-20160207
-rw-r--r-- 1 root root 101611 Feb 7 03:48 error_log-20160207
답변1
logrotate
회전하는 파일을 압축하는 것이 가능하지만 애플리케이션에서 작성한 로그 파일 이름이 정적이 아닌 경우(여기의 경우처럼 파일 이름에 날짜 접미사가 있기 때문에) 제대로 작동하지 않습니다. 이는 날짜 접미사를 포함하지 않도록(즉, 쓰기만 하도록) HTTP 서버(Apache?)를 재구성하는 경우에 access_log
작동합니다 .error_log
logrotate
다음은 이와 같이 구성하는 방법을 보여주는 샘플 솔루션입니다.
이는 로그 파일 명명 체계를 유지하려는 경우에도 해결책이 있는 또 다른 관련 질문입니다.logrotate를 사용하지 않고 작업을 수행하는 사용자 정의 스크립트를 사용합니다.
간단히 말해서, 이 파일들이 의미하는 바는 다음과 같습니다.
- access_log: 일반 HTTP 요청 성공
- error_log: 오류를 발생시킨 순수 HTTP 요청
- ssl_request_log: 성공적인 HTTPS 요청
- ssl_error_log: 오류를 발생시킨 HTTPS 요청
(물론 구성이 이 논리에서 벗어날 수 있습니다)
답변2
로그 회전을 사용할 수 있습니다.
애플리케이션 구성 설정의 예는 dpkg(Debian Package Management System)이며, /etc/logrotate.d/dpkg
이 파일의 항목 중 하나는 다음과 같습니다.
/var/log/dpkg.log {
monthly
size 500M
rotate 12
compress
delaycompress
missingok
notifempty
create 644 root root
}
지도 시간여기.
답변3
sudo crontab -e
cron에 압축 작업을 추가합니다. 루트 crontab( ) 에 다음 줄을 추가합니다 .
0 0 * * * tar -czf /var/log/httpd_backup_`date`.tar.gz /var/log/httpd && rm -rf /var/log/httpd/*
이 명령은 이전 로그로 tar 아카이브를 생성하고 기존 로그를 삭제합니다. 일은 매일 0시에 시작됩니다.