이전 로그 파일을 압축하고 새 디렉터리로 이동

이전 로그 파일을 압축하고 새 디렉터리로 이동

/home/usr/logs/1일보다 오래된 로그 파일이 포함된 폴더가 있습니다 . 하루가 지난 모든 로그 파일을 별도의 압축 아카이브(예: zip 또는 tar.gz)로 압축하고 폴더로 이동하고 싶습니다 /home/usr/logs/archive.

로그 파일의 이름 지정 형식은 valid.app5s.log.1019, app5s.gf3sts.1019, valid.app5s.gf3log.1019, app5s.gf3log.1019, app5s.gf1sts.1019, valid.app5s.gf1log.1019, 입니다 app5s.sts.1019.

나는 이것을 시도한다:

find .  -mtime +1 -exec zip filename.zip '{}' + && mv filename.zip archive/ \;

그러나 이러한 파일은 올바르게 압축되지 않습니다. 누구든지 내 코드에서 오류를 찾는 데 도움을 줄 수 있나요?

답변1

logrotate는 이를 수행할 수 있으며 패턴 일치는 *log일 수 있습니다. 그런 다음 "postrotate"라는 섹션을 추가하고 회전 후에 실행되는 작은 bash 스크립트 postrotate를 고려하십시오.

예;

/home/usr/logs/*.log {
    daily
    missingok
    compress
    #delaycompress (this will prevent compressing of one day)
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
                mv /home/usr/logs/*.gz /home/usr/logs/archive/;
    endscript
}

업데이트 1:

gzip 대신 zip을 사용하려면 다음을 추가하세요.

compresscmd /usr/bin/zip
compressoptions -r
compressext .zip

관련 정보