고유한 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
: 표준 입력(의 출력)에서 파일 이름을 읽습니다.