Logrotate'i döndürdükten sonra log dosyalarımı silmeyecek şekilde nasıl ayarlarım?


24

Bunu yapmanın bir yolu var mı?


Bize bunu neden yapmak istediğini söyleyebilir misin? Belki başka seçenekler de var ...
chmeee

Benim durumumda büyük eski günlükleri harici depolamaya indirmek ve sunucuda yenilerini tutmak güzel olurdu. Bu yüzden basit bir kütük ayırıcıya ihtiyacım var.
sekrett 12

2
Bu yapılandırma için kullanım durumum: Denetim günlüğüne ihtiyaç duyduğum için günlüğümü sonsuza kadar tutmak istiyorum, AMA dosyalarımın döndürülmesini istiyorum, böylece mevcut günlüğün fazla büyümemesi ve döndürülenlerin büyüyebilmesi için Sıkıştırılmış - Aksi halde, günlüklerin harici bir sunucuya yedeklenmesi çok zordur ve dosyaları denetlemek de çok yavaşlar.
Rudolf Mayer

Yanıtlar:


32

Logrotate.conf dosyanızda (veya eşdeğer logrotate.d dosyanızda), "yazan satırı değiştirin

rotate 10

(Numaranız farklı olabilir) daha büyük bir numaraya Bu, o kadar çok günlük kaydını tutmasını söyler. 100 yıl sürecek 36500, yapabilirsiniz.


6
Bunu bir ahududu pi (raspian) üzerine yaptığım zaman, her gece donmuş hale getirdi. Bir zamanlar çalışan işlemleri ve seri konsolu kullanarak dosyaları açmayı öğrendim ve var olmayan dosyaların 100000'ini yeniden adlandırmaya çalıştığını öğrendim. Bu yüzden dikkat et. Ne yazık ki daha ayrıntılı bilgim yok
Christian

0

Veritabanı yedeklemelerimin günlük, haftalık ve aylık olarak rotasyonunu yapmak için bunu arıyorum; bu yüzden dosyayı günlük olarak döndürüyorum, ancak haftalık dönüş yapmak için dosyayı saklıyorum ve yıllık dönüş için aynı.

Kopyala seçeneğini kullanın. Kılavuzdan:

copy

kopya Günlük dosyasının bir kopyasını alın, ancak orijinali hiçbir şekilde değiştirmeyin. Bu seçenek, örneğin, geçerli günlük dosyasının anlık görüntüsünü almak için veya başka bir yardımcı programın dosyayı kesmesi veya ayrıştırması gerektiğinde kullanılabilir. Bu seçenek kullanıldığında, eski günlük dosyası yerinde kaldığından, oluşturma seçeneğinin etkisi olmaz.


Bu, aşağıdaki yorum ile aynıdır ( serverfault.com/a/50186/275485 ) ve doğru bir cevap vermiyor; kopya, döndürülmüş eski dosyalarınızın silinmediği anlamına gelmez ..
Rudolf Mayer

-3

Rotasyonun silinmesi gereken noktayı bir kenara koymak ... ;-)

Basitçe 'kopya' kelimesini uygun dosyaya ekleyebilirsiniz (muhtemelen /etc/logrotate.d). Örneğin, bir apache2 logrotate betiği şöyle görünür:

/var/log/apache2/*.log {
    haftalık
    missingok
    52 döndür
    kompres
    delaycompress
    notifempty
    kopya
    sharedscripts
    postrotate
        eğer [-f "`. / etc / apache2 / envvars; echo $ {APACHE_PID_FILE: - / var / run / apache2.pid} `"]; sonra
            /etc/init.d/apache2 yeniden yükle> / dev / null
        fi
    endscript
}

Bunu dene ve istediğini yapıp yapmadığını kontrol et.


2
Dosyaların "döndürülmesini" istediğini varsayarsak, ancak eski dosyaları silmeyin, bu işe yaramaz. Config stanzaya "copy" eklemek, orjinal dosyanın sonsuza dek büyümeye devam edeceği ancak sonunda dosyanın eski kopyalarının silineceği anlamına gelir. Anladığım kadarıyla, "kopya" öncelikle başka bir işlemin orijinali kesmesini / silmesini beklediğinizde kullanışlıdır.
Insyte

Kesinlikle, istediğini düşündüğüm şey buydu. Özellikle "günlük dosyalarımı silmeme", "günlük dosyalarımın eski arşivlerini silmeme" yolunu istedi. Sanırım sadece bir özne ve beden içermeyen sorulara karşı daha dikkatli olmalıyım ;-)
Justin Ellison

2
"Döndükten sonra" ifadesi bir ipucu sağlar.
sonraki duyuruya kadar duraklatıldı.

4
"Rotasyonun silinmeyi içerdiği noktayı bir kenara koymak ..." Mutlaka gerekli değil. Dönme, sadece eski kütüklerin sıkıştırılmasını ve saklanmasını içerebilir, ki bu da sorulan şey göründüğü gibi.
refleksiv
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.