Hapus File Lama di Linux: Cron Job Berdasarkan Waktu dan Nama File

Update 06/11/25 · Read 3 minute

Menjaga sistem Linux tetap bersih dan teratur sangat penting, terutama pada server dengan banyak file log, cache, atau file sementara yang menumpuk.

Salah satu cara paling efektif adalah menggunakan cron job untuk menghapus file lama secara otomatis berdasarkan waktu pembuatan/modifikasi dan nama file. Artikel ini akan membahas semua yang perlu kamu ketahui, lengkap dengan contoh praktis.


1️⃣ Apa Itu Cron Job?

Cron adalah scheduler di Linux yang menjalankan perintah atau script secara otomatis sesuai jadwal. Format dasar cron:

* * * * * command_to_run
- - - - -
| | | | |
| | | | ----- Hari dalam minggu (0-7, 0 = Minggu)
| | | ------- Bulan (1-12)
| | --------- Tanggal (1-31)
| ----------- Jam (0-23)
------------- Menit (0-59)

Contoh: menjalankan perintah setiap 5 menit:

*/5 * * * * echo "Cron berjalan" >> /tmp/cron.log

2️⃣ Menghapus File Berdasarkan Waktu

Linux menyediakan perintah find untuk mencari file berdasarkan umur file, sehingga bisa dihapus secara otomatis.

a. Menghapus berdasarkan menit (-mmin)

find /path/to/folder -type f -mmin +30 -delete
  • -type f → hanya file

  • -mmin +30 → lebih dari 30 menit

  • -delete → hapus file

b. Menghapus berdasarkan jam

Karena 1 jam = 60 menit:

find /path/to/folder -type f -mmin +120 -delete
  • +120 → file lebih dari 2 jam

c. Menghapus berdasarkan hari (-mtime)

find /path/to/folder -type f -mtime +1 -delete
  • -mtime +1 → file terakhir diubah lebih dari 1 hari


3️⃣ Menghapus Berdasarkan Nama File

Kadang kita ingin menghapus file tertentu saja, misal semua file log *.log atau file sementara temp_*:

find /path/to/folder -type f -name '*.log' -mmin +60 -delete
  • -name '*.log' → hanya file berekstensi .log

  • Bisa mengecualikan file penting:

find /path/to/folder -type f -name '*.log' ! -name 'important.log' -mmin +60 -delete

4️⃣ Kombinasi Waktu dan Kondisi

find memungkinkan kombinasi logika untuk fleksibilitas:

# Hapus file lebih dari 2 jam ATAU lebih dari 1 hari
find /path/to/folder -type f \( -mmin +120 -o -mtime +1 \) -delete
  • \(...\) → group kondisi

  • -o → OR

  • Bisa diganti -a → AND


5️⃣ Contoh Script Cron Job Universal

Berikut script bash universal, aman untuk menghapus file lama berdasarkan waktu dan nama file, bisa langsung dijadikan cron job:

#!/bin/bash

# Konfigurasi
TARGET_FOLDER=“/tmp” # folder target
TIME_LIMIT_MINUTES=30 # hapus file >30 menit
FILE_PATTERN=“*” # hapus semua file, bisa diganti “*.log”
EXCLUDE_FILE=“index.html” # file yang tidak dihapus

# Hapus file lama
find $TARGET_FOLDER” –type f -name $FILE_PATTERN” \
! -name $EXCLUDE_FILE” -mmin +$TIME_LIMIT_MINUTES \
exec stat {} \; –exec rm -f {} \;

# Optional: log file yang dihapus
# find “$TARGET_FOLDER” -type f -name “$FILE_PATTERN” ! -name “$EXCLUDE_FILE” -mmin +$TIME_LIMIT_MINUTES -print >> /var/log/clear_files.log


6️⃣ Setting Cron Job

  1. Simpan script misal di /usr/local/bin/clear_old_files.sh

  2. Beri hak eksekusi:

chmod +x /usr/local/bin/clear_old_files.sh
  1. Tambahkan cron job:

crontab -e

Contoh untuk menjalankan setiap 5 menit:

*/5 * * * * /usr/local/bin/clear_old_files.sh

7️⃣ Tips Aman

  1. Selalu cek file dulu sebelum dihapus:

find /tmp -type f -mmin +30 -exec ls -lh {} \;
  1. Jangan hapus folder sistem penting, gunakan folder khusus file sementara atau cache.

  2. Gunakan -name atau ! -name untuk memfilter file yang aman dihapus.

  3. Bisa menambahkan log file yang dihapus untuk audit.


8️⃣ Ringkasan

  • Cron job + find → cara otomatis menghapus file lama

  • -mmin → menit, -mtime → hari

  • Filter nama file → menghapus file tertentu saja

  • Script universal → mudah disesuaikan folder, waktu, dan pattern

Dengan setup ini, server tetap bersih, file sementara tidak menumpuk, dan performa sistem tetap optimal.