file.tar.gz에서만 오래된 로그 파일을 회전하는 방법은 무엇입니까?

file.tar.gz에서만 오래된 로그 파일을 회전하는 방법은 무엇입니까?

고유한 file.tar.gz에서 30일보다 오래된 모든 로그 파일을 회전하고 아카이브에 삽입된 파일을 삭제하는 방법은 무엇입니까?

앞으로:

a.log // older than 30days
b.log // older than 30days
c.log // older than 20 days

뒤쪽에:

backup.tgz
c.log

답변1

Linux 로거를 사용하고 있고 다음에 회전 구성을 추가할 수 있는 경우/etc/logrotate.d크기, 형식 등을 지정할 수 있는 디렉토리입니다.

예:

/var/log/test.log {
    rotate 30
    weekly
    size=30k
    compress 
}

여기 하나 있어요컨닝 지스크립트용.

답변2

다음을 수행할 수 있습니다.

find . -name '*log' -mtime +30 -print0 | tar -czvf backup.tgz --remove-files --null -T -

그리고:

  • find옵션:
    • -name '*log' -mtime +30: 30일이 지난 로그 파일을 선택합니다.
    • -print0:표준 출력에 전체 파일 이름을 인쇄하고 그 뒤에 널 문자가 옵니다.
  • tar옵션:
    • --remove-files: 파일을 아카이브에 추가한 후 삭제합니다.
    • --null: null로 끝나는 이름 읽기(에서 보낸 find -print0)
    • -T -find: 표준 입력(의 출력)에서 파일 이름을 읽습니다.

관련 정보