Created
December 29, 2025 09:57
-
-
Save sinansh/b8a36315242b70b0f02c986a2b8af394 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env bash | |
| set -euo pipefail | |
| BASE="/qradar_backups" | |
| LOGDIR="/var/log/qradar" | |
| LOGFILE="$LOGDIR/qradar_backup_$(date +%F).log" | |
| MAIL_FROM="from@domain.tld" | |
| MAIL_TO="to@domain.tld" | |
| STABLE_MINUTES=60 # Son 60 dk değişmemiş dosyalar taşınır | |
| STALE_ROOT_MINUTES=2880 # 48 saat = 2880 dk; kökte bu süreden eski dosya varsa ALARM | |
| mkdir -p "$LOGDIR" | |
| echo "=== $(date) | QRadar yedek taşıma başladı ===" >> "$LOGFILE" | |
| moved_count=0 | |
| skipped_active=0 | |
| skipped_nomatch=0 | |
| errors=0 | |
| # Kök dizindeki dosyaları tara (hepsi taşınsın diye tarih filtresi yok) | |
| find "$BASE" -maxdepth 1 -type f -print0 | while IFS= read -r -d '' f; do | |
| bn="$(basename "$f")" | |
| # Aktif (hala değişen) dosyaları atla | |
| if find "$f" -maxdepth 0 -type f -mmin -"$STABLE_MINUTES" >/dev/null 2>&1; then | |
| echo "$(date) | ATLANDI (aktif/değişiyor): $bn" >> "$LOGFILE" | |
| ((skipped_active++)) | |
| continue | |
| fi | |
| # Dosya adından _MM_YYYY yakala (örnek: ..._12_2025...) | |
| if [[ "$bn" =~ _([0-9]{1,2})_([0-9]{4}) ]]; then | |
| month="$(printf "%02d" "${BASH_REMATCH[1]}")" | |
| year="${BASH_REMATCH[2]}" | |
| # Ay doğrulama | |
| if ! [[ "$month" =~ ^(0[1-9]|1[0-2])$ ]]; then | |
| echo "$(date) | HATALI AY: $bn" >> "$LOGFILE" | |
| ((errors++)) | |
| continue | |
| fi | |
| dest="$BASE/$year/$month" | |
| mkdir -p "$dest" | |
| # -n: aynı isim varsa üzerine yazma | |
| if mv -n -- "$f" "$dest/"; then | |
| echo "$(date) | TAŞINDI: $bn -> $dest" >> "$LOGFILE" | |
| ((moved_count++)) | |
| else | |
| echo "$(date) | HATA (taşınamadı): $bn" >> "$LOGFILE" | |
| ((errors++)) | |
| fi | |
| else | |
| echo "$(date) | TARİH BULUNAMADI: $bn" >> "$LOGFILE" | |
| ((skipped_nomatch++)) | |
| fi | |
| done | |
| echo "=== $(date) | Özet: taşınan=$moved_count aktif_atlanan=$skipped_active tarih_yok=$skipped_nomatch hata=$errors ===" >> "$LOGFILE" | |
| # ---------------- KÖK DİZİN YAŞLANMA ALARMI (48 saat) ---------------- | |
| OLD_FILES="$(find "$BASE" -maxdepth 1 -type f -mmin +"$STALE_ROOT_MINUTES" -printf "%f\n" 2>/dev/null || true)" | |
| if [[ -n "$OLD_FILES" ]]; then | |
| echo "=== $(date) | ALARM: Kök dizinde 48 saatten eski dosya(lar) ===" >> "$LOGFILE" | |
| echo "$OLD_FILES" >> "$LOGFILE" | |
| mail -r "$MAIL_FROM" -s "ALARM: QRadar Kök Dizininde 48 Saatten Eski Dosya Var" "$MAIL_TO" <<EOF | |
| Merhaba, | |
| /qradar_backups kök dizininde 48 saatten uzun süredir duran dosya(lar) tespit edilmiştir. | |
| Bu durum aşağıdaki olasılıklara işaret edebilir: | |
| - Dosya adı beklenen formata uymuyor (tarih yakalanamıyor) | |
| - Taşıma script’i cron ile çalışmamış veya hata almış olabilir | |
| - NFS kopyalama süreci yarım kalmış ve ilerlemiyor olabilir | |
| Tespit edilen dosyalar: | |
| $OLD_FILES | |
| İşlem tarihi : $(date) | |
| Log dosyası : $LOGFILE | |
| Lütfen kontrol edilmesini rica ederiz. | |
| İyi çalışmalar. | |
| EOF | |
| fi | |
| # ---------------- DURUMA GÖRE MAİL ---------------- | |
| # ❌ UYARI: hata varsa veya aktif dosya atlandıysa (operasyonel dikkat) | |
| if (( errors > 0 || skipped_active > 0 )); then | |
| mail -r "$MAIL_FROM" -s "UYARI: QRadar Yedek Taşıma Sorunu" "$MAIL_TO" <<EOF | |
| Merhaba, | |
| QRadar yedek taşıma işlemi sırasında dikkat edilmesi gereken durumlar oluşmuştur. | |
| Özet: | |
| - Taşınan dosya sayısı : $moved_count | |
| - Aktif olduğu için atlanan dosya : $skipped_active | |
| - Tarih bilgisi bulunamayan dosya : $skipped_nomatch | |
| - Hata sayısı : $errors | |
| Not: Aktif olduğu için atlanan dosyalar, bir sonraki çalışmada otomatik olarak tekrar denenecektir. | |
| İşlem tarihi : $(date) | |
| Log dosyası : $LOGFILE | |
| Bilgilerinize sunarız. | |
| İyi çalışmalar. | |
| EOF | |
| fi | |
| # ✅ BAŞARILI: en az 1 dosya taşındı ve hiç hata yok ve aktif atlama yok | |
| if (( moved_count > 0 && errors == 0 && skipped_active == 0 )); then | |
| mail -r "$MAIL_FROM" -s "QRadar Yedek Taşıma Başarılı" "$MAIL_TO" <<EOF | |
| Merhaba, | |
| QRadar yedek taşıma işlemi başarıyla tamamlanmıştır. | |
| Taşınan dosya sayısı : $moved_count | |
| İşlem tarihi : $(date) | |
| Log dosyası : $LOGFILE | |
| Bilgilerinize sunarız. | |
| İyi çalışmalar. | |
| EOF | |
| fi |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Kurulum komutları
Test:
Cron