Her gün aynı komutları elle yazıyorsan, onları bir scripte koy. İşte güvenli bir başlangıç iskeleti:
#!/usr/bin/env bash
set -euo pipefail # hata olursa dur, tanımsız değişkende dur, pipe hatasını yakala
# Bir klasördeki tüm .log dosyalarını tarih damgalı bir arşive topla
KAYNAK="${1:-.}" # 1. argüman, yoksa bu klasör
HEDEF="arsiv_$(date +%Y%m%d).tar.gz"
say() { printf ">> %s\n" "$1"; }
say "Kaynak: $KAYNAK"
dosyalar=$(find "$KAYNAK" -maxdepth 1 -name "*.log" -type f)
if [ -z "$dosyalar" ]; then
say "Log dosyası yok, çıkılıyor."
exit 0
fi
tar -czf "$HEDEF" $dosyalar
say "Oluşturuldu: $HEDEF ($(du -h "$HEDEF" | cut -f1))"
Çalıştırmak için:
chmod +x topla.sh # bir kez çalıştırılabilir yap
./topla.sh /var/log
Bilmen gereken 5 şey
set -euo pipefailsatırını her scriptin başına koy. Sessiz hataların önüne geçer; profesyonel scriptin işareti budur."$değişken"her zaman çift tırnak içinde. Boşluklu dosya adları yoksa bile alışkanlık edin, baş ağrısından kurtarır.${1:-varsayılan}argüman verilmezse varsayılanı kullanır.$(...)bir komutun çıktısını değişkene alır.- Scripti çalıştırmadan önce
bash -n script.shile söz dizimi kontrolü yapabilirsin. Daha derin denetim için shellcheck aracı (editöründe eklenti olarak da var).
Kendi otomasyon scriptlerinizi paylaşın, birbirimizden öğrenelim.