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

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

/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

관련 정보