Panduan Membersihkan Log Linux Otomatis Setiap Bulan dengan Aman

Membersihkan file log sistem secara berkala penting untuk menjaga performa server dan menghindari pemborosan ruang disk. Jika Anda mengelola VPS atau server Linux produksi, log dapat tumbuh besar dan menyebabkan disk penuh jika tidak dikontrol. Artikel ini membahas cara membersihkan log Linux secara otomatis setiap bulan menggunakan bash script dan notifikasi via email. π
π¦ Apa Itu File Log Linux?
File log adalah catatan aktivitas sistem yang dihasilkan oleh berbagai komponen, seperti kernel, sistem init, paket aplikasi, dan keamanan. Semua log biasanya disimpan di direktori /var/log
.
Beberapa file log penting:
/var/log/auth.log
β log autentikasi (login, sudo)/var/log/syslog
β log sistem umum/var/log/kern.log
β log kernel Linux/var/log/btmp
,wtmp
,lastlog
β log aktivitas login user
Jika dibiarkan, file ini bisa membengkak hingga ratusan MB bahkan GB! π§¨
π§ Script Pembersihan Log Otomatis
Berikut adalah bash script untuk membersihkan log yang aman dan mengirim hasilnya ke email menggunakan msmtp
:
#!/bin/bash
LOGFILE="/tmp/log-cleanup-report.txt"
EMAIL="emailkamu@gmail.com"
# Header laporan
{
echo "π§Ή $(date '+%a %b %d %r %Z %Y') - Mulai pembersihan log di /var/log secara aman..."
echo ""
printf "%-50s | %-10s | %-10s\n" "π Jenis File" "Aksi" "Status"
printf '%.0s-' {1..50}; echo " | ---------- | ----------"
} > "$LOGFILE"
# Fungsi untuk menambahkan baris ke tabel
add_row() {
printf "%-50s | %-10s | %-10s\n" "$1" "$2" "$3" >> "$LOGFILE"
}
# Truncate file log utama
LOG_FILES=(
/var/log/auth.log
/var/log/kern.log
/var/log/syslog
/var/log/lfd.log
/var/log/msmtp.log
/var/log/custom-ssh-block.log
/var/log/dpkg.log
/var/log/bootstrap.log
/var/log/apport.log
/var/log/cloud-init.log
/var/log/cloud-init-output.log
/var/log/alternatives.log
/var/log/ubuntu-advantage-apt-hook.log
/var/log/rclone-gdrive.log
)
for FILE in "${LOG_FILES[@]}"; do
if : > "$FILE" 2>/dev/null; then
add_row "$FILE" "Truncate" "β
Success"
else
add_row "$FILE" "Truncate" "β Gagal"
fi
done
# Truncate login history
for FILE in /var/log/btmp /var/log/wtmp /var/log/lastlog; do
if : > "$FILE" 2>/dev/null; then
add_row "$FILE" "Truncate" "β
Success"
else
add_row "$FILE" "Truncate" "β Gagal"
fi
done
# Hapus rotated logs (*.1, *.gz)
ROTATED_LOGS=$(find /var/log -type f \( -name "*.1" -o -name "*.gz" \))
if [ -n "$ROTATED_LOGS" ]; then
while read -r FILE; do
rm -f "$FILE" && add_row "$FILE" "Remove" "β
Deleted"
done <<< "$ROTATED_LOGS"
else
add_row "Rotated logs (*.1, *.gz)" "Remove" "βΉοΈ Kosong"
fi
# Bersihkan systemd journal > 7 hari
JOURNAL_OUTPUT=$(journalctl --vacuum-time=7d 2>&1)
add_row "Systemd journal (>7 hari)" "Vacuum" "β
Done"
# Bersihkan log APT & unattended-upgrades
find /var/log/apt -type f -delete 2>/dev/null
find /var/log/unattended-upgrades -type f -delete 2>/dev/null
add_row "/var/log/apt & unattended-upgrades" "Clear" "β
Done"
# Tambahkan ringkasan dan waktu selesai
{
echo ""
echo "π§½ Ringkasan Journalctl:"
echo "$JOURNAL_OUTPUT"
echo ""
echo "β
Pembersihan selesai pada $(date '+%a %b %d %r %Z %Y')"
} >> "$LOGFILE"
# Kirim email dengan subject dan header lengkap
if command -v msmtp >/dev/null 2>&1; then
{
echo "Subject: Monthly Log Cleanup Report - $(date +'%Y-%m-%d')"
echo "From: Server Logs <emailkamu@gmail.com>"
echo "To: $EMAIL"
echo "Content-Type: text/plain; charset=UTF-8"
echo ""
cat "$LOGFILE"
} | msmtp "$EMAIL"
echo "π€ Laporan dikirim ke $EMAIL"
else
echo "β msmtp tidak ditemukan. Email tidak dikirim."
fi
π¬ Notifikasi Email dengan msmtp
Installasi msmtp :
sudo apt update && sudo apt install msmtp msmtp-mta ca-certificates
Lalu buat file konfigurasi nano /etc/msmtprc
seperti berikut:
defaults
auth on
tls on
tls_starttls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
account default
host smtp.gmail.com
port 587
from your-email@example.com
user your-email@example.com
password your-app-password
π Gunakan App Password jika pakai Gmail, bukan password utama!
Setelah menyimpan skrip, beri izin eksekusi:
sudo chmod +x /usr/local/bin/monthly-log-cleanup.sh
β²οΈ Jadwalkan dengan Cron
Tambahkan ke crontab agar otomatis jalan tiap bulan:
sudo crontab -e
Lalu masukkan:
0 3 1 * * /usr/local/bin/monthly-log-cleanup.sh
Script akan berjalan tanggal 1 setiap bulan pukul 03:00 dini hari. π
π‘οΈ Tips Tambahan
- Hindari hapus log aktif seperti
journal
,utmp
secara paksa. - Gunakan
logrotate
jika ingin pengelolaan lanjutan. - Simpan backup log jika dibutuhkan untuk audit keamanan.
π Kesimpulan
Dengan menerapkan pembersihan log otomatis setiap bulan, Anda akan:
- Menghemat ruang disk π½
- Menjaga sistem tetap ringan βοΈ
- Mendapat laporan berkala ke email π§
Cara ini cocok untuk server pribadi, VPS, atau produksi kecil-menengah yang butuh efisiensi tanpa ribet. Yuk mulai jadwalkan sekarang, dan biarkan server Anda tetap sehat setiap bulan! π§Όπ»
Thankyou mas π
Siap. Sama sama mas.