LATAR BELAKANG
Seiring waktu berjalan, file log di server Linux bisa bertumpuk dan memakan ruang penyimpanan yang cukup besar. Mulai dari log sistem (/var/log/syslog), log web server (access.log), hingga log aplikasi. Jika tidak pernah dibersihkan, log lama bisa menyebabkan harddisk penuh, performa server melambat, bahkan layanan mogok.
Meskipun banyak tools otomatis seperti logrotate, ada kalanya kita perlu menghapus log secara manual—misalnya saat darurat disk penuh, atau saat ingin membersihkan sisa-sisa log dari aplikasi lama. Artikel ini akan membahas cara aman menghapus log lama di Linux server tanpa risiko menghapus file yang masih dibutuhkan.
Meskipun banyak tools otomatis seperti logrotate, ada kalanya kita perlu menghapus log secara manual—misalnya saat darurat disk penuh, atau saat ingin membersihkan sisa-sisa log dari aplikasi lama. Artikel ini akan membahas cara aman menghapus log lama di Linux server tanpa risiko menghapus file yang masih dibutuhkan.
PERIKSA RUANG DISK DULU
Hapus file .log di /var/log yang lebih lama dari 30 harisudo find /var/log -name "*.log" -type f -mtime +30 -delete
-name "*.log" → hanya file dengan ekstensi .log.
-type f → hanya file (bukan direktori).
-mtime +30 → file yang terakhir diubah lebih dari 30 hari yang lalu,
-delete → hapus file tersebut.
-type f → hanya file (bukan direktori).
-mtime +30 → file yang terakhir diubah lebih dari 30 hari yang lalu,
-delete → hapus file tersebut.
Hati-hati: Jangan langsung pakai -delete tanpa mencoba -ls dulu untuk melihat file apa saja yang akan dihapus. Contoh aman dulu:
sudo find /var/log -name "*.log" -type f -mtime +30 -ls
Jika sudah yakin, baru tambahkan -delete.
Hapus file log yang sudah di-rotate (berakhiran .1, .2.gz, dll)
Banyak log di-rotate secara otomatis menjadi syslog.1, syslog.2.gz, auth.log.1, dan seterusnya. Log-law ini bisa dihapus jika sudah sangat lama:
Hapus semua file .1, .2, .3, .4, .5, .gz yang lebih lama dari 7 hari
sudo find /var/log -type f \( -name "*.1" -o -name "*.2" -o -name "*.3" -o -name "*.4" -o -name "*.5" -o -name "*.gz" \) -mtime +7 -delete
Atau lebih simpel: hapus semua file log yang sudah di-rotate (biasanya berakhiran angka atau .gz) yang lebih tua dari 14 hari:
sudo find /var/log -type f -regex ".*\.[0-9]+$" -mtime +14 -delete
sudo find /var/log -type f -name "*.gz" -mtime +14 -delete
sudo find /var/log -type f -name "*.gz" -mtime +14 -delete
MENGHAPUS SELURUH ISI FILE LOG TANPA MENGHAPUS FILENYA
Kadang kita tidak ingin menghapus file log-nya, hanya ingin mengosongkan isinya (misal file sedang digunakan oleh aplikasi). Gunakan truncate atau redirection kosong:
# Cara 1: truncatesudo truncate -s 0 /var/log/syslog
# Cara 2: redirect kosong
sudo cat /dev/null > /var/log/syslog
# Cara 3: echo kosong (paling sederhana)
sudo echo "" > /var/log/syslog
RESTART ATAU REOPEN LOG SERVICE
Setelah menghapus file log secara manual, ada beberapa aplikasi
yang masih memegang file handle ke file log yang sudah dihapus. Agar log
baru mulai tercatat dengan benar, lakukan salah satu dari:
# Untuk syslog (rsyslog)
sudo systemctl restart rsyslog
# Untuk Nginx (reload lebih ringan dari restart)
sudo systemctl reload nginx
# Atau kirim sinyal USR1 ke proses (untuk aplikasi yang reopen log-nya)
sudo kill -USR1 <PID_nginx>
Atau jika malas restart, gunakan metode truncate di atas agar filenya tetap ada dan tidak perlu restart.
KESIMPULAN
Menghapus log lama secara manual bukanlah praktik terbaik untuk jangka panjang (lebih baik pakai logrotate), tapi sangat berguna untuk situasi darurat atau pembersihan satu kali. Ingat tiga hal penting:
- Lihat dulu sebelum hapus – gunakan find -ls.
- Jangan hapus file log yang sedang aktif – gunakan truncate jika tidak ingin restart service.
- Perhatikan rotasi log – file dengan ekstensi angka atau .gz biasanya aman dihapus jika sudah lewat 30–90 hari.
DAFTAR PUSTAKA
.png)

