Menghapus File Lebih dari x hari di Linux

Metode ini biasanya digunakan untuk daily backup pada sebuah storage yang dikhususkan untuk backup. Retensi backup yang diberikan bisa diatur sesuai keinginan kita. Mengapa harus seperti ini? Jawabannya adalah untuk menghemat space di storage kita. Bayangkan saja kalau setiap hari membackup pasti lama-lama storage kita akan penuh, maka dari itu file-file backup yang lama bisa di burning ke DVD/CD, atau kita menghapusnya seperti topik yang akan saya bahas.
Metode ini menggunakan Shell Script yang akan di eksekusi dengan crontab setiap jangka waktu tertentu, sudah pasti ini akan menjadi patokan retensi backup kita kan. :) sebenarnya tidak terlalu sulit untuk melakukannya, jadi jangan khawatir. Ikuti saja langkah-langkah cara menghapus file lebih dari x hari ini, anda juga bisa dengan bebas menjiplak shell script yang akan saya buat :)

Skenario :
Kita melakukan daily backup pada folder /home/apocalypsix/backup/. Didalam folder tersebut pasti akan tersimpan file backup dengan timestamp yang berbeda-beda. Setiap 7 hari jam 12:01 malam crontab akan mengeksekusi shell script dibawah ini.

Sample script :

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin

SEVENDAY=`date “+%d.%m.%Y” –date=”-7 days”`

rm /home/apocalypsix/backup/backup_$SEVENDAY.tar.gz

  • Pada baris pertama dan kedua kita menentukan eksekutor shell script.
  • Pada baris ketiga kita sedang membuat aturan retensi hari, untuk bagian “–date=”-7 days” anda bisa mengubah angkanya menjadi hari yang anda inginkan.
  • Pada baris keempat kita akan menghapus semua file yang bernama backup_ dengan memasukkan variabel retensi serta ekstensi file.

Untuk mengatur shell script ini berjalan setiap 7 hari, kita menggunakan crontab. Asumsi bahwa shell script tersimpan di /home/apocalypsix/shell/delete7day.sh. Jangan lupa untuk menambahkan permission x pada shell script anda, chmod 700 /home/apocalypsix/shell/delete7day.sh.

1 0 * * 0 /home/apocalypsix/shell/delete7day.sh

Dari crontab diatas, shell script kita akan di eksekusi pada hari ke 0 (hari minggu), pada jam 12:01 malam.

[ TAMBAHAN ]

Parameter tambahan untuk settingan retensi ada banyak. Parameter yang saya tau adalah bahwa pada bagian –date=”x days”, pada bagian “x” mempunyai parameter tersendiri, seperti jika kita membuat file untuk 5 hari kedepan maka value dari “x” maka tidak boleh memakai tanda minus (-). Tanda minus hanya digunakan jika anda ingin melakukan sesuatu pada beberapa hari kebelakang. Lain hal nya jika anda ingin melakukan penghapusan tadi pada setiap file sehari sebelum tanggal sekarang. Value dari “x” tadi harus menjadi “yesterday”.

Sample script :

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin

YESTERDAY=`date “+%d.%m.%Y” –date=”yesterday”`

rm /home/apocalypsix/backup/backup_$YESTERDAY.tar.gz

Dalam shell script diatas retensi penghapusan menjadi 1 hari. Tentunya ini harus disesuaikan pula dengan settingan crontab anda karena settingan crontab tersebut saling terkait dengan shell script anda. Crontab anda harusnya menjadi seperti ini :

1 0 * * * /home/apocalypsix/shell/delete1day.sh

Balas komentar

Anda harus login terlebih dahulu untuk menambah komentar.