Birçok günlük dosyasını döndürme başına farklı bir alt dizine nasıl döndürebilirim?


12

Hepsi günlük olarak döndürmek istiyorum birçok günlük dosyaları ile bir dizin var. Kuruluş amacıyla, döndürülen günlükleri, günlüklerin son haftasını koruyarak tarihe göre adlandırılan farklı bir dizine (veya alt dizine) taşıyabilmek istiyorum.

Dosyaları yerinde yerinde roatating veya hatta olddirdirektif kullanarak tek bir farklı dizine taşımak için logrotate kullanabilirsiniz ancak dönüş başına bireysel alt dizinleri yapmak için bir çözüm bulmakta sorun yaşıyorum. Bunu nasıl başarabilirim?:

Logs to rotate: /var/log/example/*

Desired target directories (keeping a week):
    /var/log/example/20121006/*
    [ ... ]
    /var/log/example/20121012/*

Yanıtlar:


9

Yönergede harici bir komut dosyası çağırabilirsiniz postrotate:

postrotate
  /path/to/your.sh
endscript

ve bu komut dosyasının hareket etmesini sağlayın, örneğin:

#!/bin/bash

newdir=/var/log/example/`date +%Y%m%d`

mkdir $newdir
mv /var/log/example.1.gz $newdir

find /var/log/example -mindepth 1 -maxdepth 1 -mtime +7 \
  -type d -print0 | xargs -0 rm -rf

Ancak, dateextdirektifi kullanmak daha kolay olabilir . Bununla birlikte, döndürülen dosyalara bir zaman damgası eklenir (farklı bir dizine taşınmasa da).

Bkz logrotate(8)hem direktifler hakkında ayrıntılar için.


postrotateHile yapacak gibi görünüyor . Eklemem gereken tek şey, belirli bir sayı üzerinde veya belirli bir tarihten daha eski olan eski dizinleri temizlemektir.
Dave Forgac

1
Güncellenmiş cevaba bakınız. find | xargsKomut tüm acil alt dizinleri silmelisiniz /var/log/examplegeçen fazla 7 gün önce düzenlenen eğer.
Ansgar Wiechers

1

Sen var olddir, yapılandırma dosyasında kullanabilirsiniz yönergesi.

Belgelerden:

olddir
Günlükler, dönüş için dizine taşınır. Dizin, günlük dosyası döndürülmeyle aynı fiziksel aygıtta olmalıdır ve mutlak bir yol adı belirtilmedikçe günlük dosyasını tutan dizine göreli olduğu varsayılır. Bu seçenek kullanıldığında, günlüğün tüm eski sürümleri dizine eklenir. Bu seçenek, noolddirseçenek tarafından geçersiz kılınabilir .

Referans : https://manpages.debian.org/jessie/logrotate/logrotate.8.en.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.