Büyük boyuttaki eski log dosyalarını otomatik olarak silecek veya taşıyacak scriptler, sistem yönetimi açısından oldukça faydalıdır. Özellikle disk alanını korumak ve logların düzenli tutulmasını sağlamak için bu tür otomasyonlar kullanılır. Aşağıda, belirli bir dizindeki log dosyalarını boyut sınırını aşan ve belirli bir süre geçmiş olanları silen örnek bir bash scripti bulabilirsin.
Scriptin temel mantığı şu:
- Belirli bir dizinde (.log uzantılı dosyalar) arama yapar.
- Dosyanın boyutunu kontrol eder (örneğin 100MB sınırı).
- Dosyanın son erişim veya değiştirme zamanını kontrol eder (örneğin 30 gün önceye ait).
- Bu şartları sağlayan dosyaları siler veya arzu edilirse taşır.
Örnek script:
1234567891011121314151617181920212223242526272829303132333435363738
#!/bin/bash
[b]Logların bulunduğu dizin[/b]
LOG_DIR="/var/log/myapp"
[b]Boyut sınırı (byte cinsinden), örn: 100MB = 104857600[/b]
SIZE_LIMIT=104857600
[b]Süre sınırı (gün), örn: 30 gün[/b]
DAYS_OLD=30
[b]Güncel zaman (epoch)[/b]
NOW=$(date +%s)
[b]Log dizininde döngü[/b]
find "$LOG_DIR" -type f -name "*.log" | while read FILE; do
# Dosya boyutunu byte cinsinden al
FILE_SIZE=$(stat -c%s "$FILE")
# Son erişim zamanını epoch olarak al
LAST_ACCESS=$(stat -c %X "$FILE")
# Veya son değiştirilme zamanı
# LAST_MODIFIED=$(stat -c %Y "$FILE")
# Dosya boyutu ve zamanı karşılaştır
if [ "$FILE_SIZE" -ge "$SIZE_LIMIT" ]; then
# Dosyanın son erişim veya değiştirilmiş zamanı ile gün arasındaki fark
AGE_DAYS=$(( (NOW - LAST_ACCESS) / 86400 ))
# veya LAST_MODIFIED ile
# AGE_DAYS=$(( (NOW - LAST_MODIFIED) / 86400 ))
if [ "$AGE_DAYS" -ge "$DAYS_OLD" ]; then
echo "Siliniyor: $FILE (Boyut: $FILE_SIZE bytes, Yaş: $AGE_DAYS gün)"
# Silmek için yorum satırını kaldır
# rm "$FILE"
fi
fi
done
Bu script temel alındığında, ihtiyaçlara göre uyarlanabilir.
Örneğin, silmek yerine arşivlemek veya başka bir dizine taşımak istersen,
rm komutunu uygun şekilde değiştirmen yeterli olur. Ayrıca, günlük veya saatlik otomasyonlar için cron ile planlanabilir.
Dikkat edilmesi gerekenler:
- Scripti test ortamında çalıştırıp, doğru çalıştığından emin olmalısın.
- Silme işlemi geri alınamaz, bu yüzden ilk başta sadece listeleme yapacak şekilde kullanmak daha güvenli olur.
- Log dizinini ve boyut sınırını dikkatlice belirle.
İşte bu tarz bir otomasyon, özellikle disk alanı yönetiminde büyük kolaylık sağlar. Senin özel ihtiyaçlarına göre bu scripti modifiye etmek veya gelişmiş özellikler eklemek mümkün. Bu konuda kendi deneyimlerin veya karşılaştığın sorunlar varsa, paylaşabilirsin.