/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