postrotate

logrotate.conf postrotate:

( [ -d /logs/archive/`date +%Y-%m` ] || ( mkdir -p /logs/archive/`date +%Y-%m` && chmod 700 /logs/archive/`date +%Y-%m` && chown root:root /logs/archive/`date +%Y-%m` )) && cp -f *.log-`date +%Y%m%d`.gz /logs/archive/`date +%Y-%m` && find /logs -maxdepth 1 -mtime +"10" -name "*log*.gz" -exec rm -f "{}" ";" || false

Ha a /logs/archive/ev-honap konyvtar nem letezik, hozd letre rwx------ jogokkal es root user es group ownershippel.
Ezutan masold at a konyvtarba az elozo nap keletkezett frissen betomoritett osszes logot valamint torold le a /logs konyvtarbol a 10 napnal regebbi logokat.

Hozzászólások

syslog-ng rules :).
--
1 leszel vagy 0 élő vagy hulla!

A szepsege vagy a randasaga - meg nem tudtam eldonteni - okan postoltam :)

az a sok-sok "date +%..." hívás nem kicsit ronda...

Szerintem felesleges a konyvtar megletenek az ellenorzese, mkdir -p 'force' modban mukodik es 0-t ad vissza akkor is, ha a konyvtar mar letezik.


lgee@host:~> ls -ld .adobe
drwx------ 3 lgee users 4096 Oct 15  2010 .adobe
lgee@host:~> mkdir -p $PWD/.adobe && echo "Return value is 0"
Return value is 0

nem inkabb mkdir -p $PWD/.adobe && echo "Return value is $?" ?

Vegul kicsit atirtam a logikajat, minden nap atmasolja a frissen keletkezett .gz-t es torli a tiz napnal regebbieket.

DATE=$(date +%Y-%m); mkdir -m 700 -p /opt/data/proftpd/logs/archive/"$DATE" && chown root:root /opt/data/proftpd/logs/archive/"$DATE" && LOGDATE=$(date +%Y%m%d); cp -f *.log-"$LOGDATE".gz /opt/data/proftpd/logs/archive/"$DATE"/ && find /opt/data/proftpd/logs -maxdepth 1 -mtime +"10" -name "*log*.gz" -exec rm -f "{}" ";" || false