Berikut skrip quickie yang akan melakukan apa yang Anda butuhkan:
#!/bin/bash
LOGDIR=/var/log/somedir
OLDLOGS=/var/log/keep-old-logs-here
PATH=/bin:$PATH
TODAY=$(date +'%Y%m%d')
[ -d $OLDLOGS ] || mkdir -p $OLDLOGS
cd $LOGDIR
for LOG in $(ls | egrep '^[[:digit:]]{8}$'); do
[ $LOG -lt $TODAY ] && gzip $LOG && mv $LOG.gz
done
Jadikan skrip dapat dieksekusi:
$ chmod +x /where/you/put/this/script
Entri crontab akan terlihat seperti:
30 0 * * * /where/you/put/this/script
Cukup sesuaikan LOGDIRdan OLDLOGDIR. Pada pukul 12:30 pagi, itu akan memindahkan semua log dalam format YYYYMMDD untuk hari-hari sebelumnya (dan sebelumnya, jika ada).
Ya, tetapi itu tidak benar-benar menjawab pertanyaan saya. Pertanyaan saya adalah apakah saya bisa menggunakan logrotate untuk ini.
Šimon Tóth
@Let_Me_Be - Saya pikir itu tersirat dalam jawaban saya. Tidak, logrotate tidak akan melakukan apa yang Anda inginkan. Artinya, Anda tidak bisa hanya mencocokkan file YYYYMMDD. Jika tidak, Anda dapat datang dekat dengan menggunakan nodateext, olddir, compress, dan dailypilihan.
unpythonic
3
logrotate dapat melakukannya dengan olddir jika nama file log Anda sama setiap kali berjalan dan Anda dapat menambahkan tanggal. Jika nama file log Anda berubah yaitu YYYYMMDD maka logrotate tidak akan melakukannya untuk Anda.
Ini bukan jawabannya. Log sudah memiliki datestamps, dan secara efektif diputar, Let_Me_Be hanya ingin mengompresnya. Saya yakin @jmtd benar.
andrew lorien
2
logrotateitu sendiri tidak melakukan ini. Saya akan merekomendasikan untuk menulis skrip tambahan dan memohonnya agar tidak logrotatemenggunakan postrotateopsi dalam konfigurasi.
nodateext
,olddir
,compress
, dandaily
pilihan.logrotate dapat melakukannya dengan olddir jika nama file log Anda sama setiap kali berjalan dan Anda dapat menambahkan tanggal. Jika nama file log Anda berubah yaitu YYYYMMDD maka logrotate tidak akan melakukannya untuk Anda.
Salinan dan gzips /logs/sys.log ke /logs/logarchive/sys.20120101.log.gz, simpan log selama satu minggu.
sumber
logrotate
itu sendiri tidak melakukan ini. Saya akan merekomendasikan untuk menulis skrip tambahan dan memohonnya agar tidaklogrotate
menggunakanpostrotate
opsi dalam konfigurasi.sumber