Tips Bash Script : Menghapus File yang Dibuat Sebelum Tanggal Tertentu
Saat menangani salah satu server klien Excellent, sebuah perusahaan besar dibidang transportasi, saya memerlukan cara cepat untuk menghapus file-file backup yang berada pada folder /tmp/backup-vavai dan usianya lebih dari tanggal tertentu.
Maksudnya seperti ini. Pada suatu server, saya memiliki file-file backup mailbox email dalam bentuk file .tar.gz. Jumlahnya ribuan, ukurannya bervariasi dan total data sekitar 400-500 GB. Saya ingin menghapus file backup yang dibuat sebelum tanggal 1 Agustus 2013 dengan pertimbangan file ini sudah boleh dihapus karena sudah sekitar 1 bulan mengendap tanpa ada komplain.
Ternyata dengan BASH, eksekusi hal ini mudah sekali. Kita cukup membuat file temporer yang seolah-olah dibuat pada tanggal 1 Agustus 2013, kemudian melakukan perintah pencarian sekaligus menghapus file yang kita maksudkan. Perintahnya cukup 2 baris seperti berikut ini :
[code lang=”bash”]
touch -t 201308010000 filepembanding.txt
find /tmp/backup-vavai -type f ! -newer filepembanding.txt -delete
[/code]
Jika ingin menampilkan saja, ganti argument/parameter -delete dengan -ls. Perintah dengan parameter -ls ini bermanfaat jika kita ingin mengecek apakah perintah yang kita jalankan sudah benar atau belum. Jangan sampai kita salah hapus data penting karena salah perintah 😛
Bagaimana jika yang ingin dihapus adalah file yang lebih baru dari file pembanding tersebut? Mudah saja. Cukup hilangkan tanda ! dari perintah diatas. Tanda ! melambangkan kondisi bertolak belakang, jadi perintah
[code lang=”bash”]
find /tmp/backup-vavai -type f ! -newer filepembanding.txt -delete
[/code]
Dibaca : Temukan semua file pada folder /tmp/backup-vavai yang usianya TIDAK lebih baru dari file pembanding kemudian hapus file tersebut.
Jika kita hilangkan tanda ! menjadi
[code lang=”bash”]
find /tmp/backup-vavai -type f -newer filepembanding.txt -delete
[/code]
akan dibaca : Temukan semua file pada folder /tmp/backup-vavai yang usianya LEBIH BARU dari file pembanding kemudian hapus file tersebut.
Jika yang ingin dihapus berupa folder, ganti parameter -type f dengan -type d.
BASH bahasa pemrogramman yang keren kan 😉
Mungkin tepatnya command line tips. Karena find bukan internal bash, bisa dipanggil dari shell apapun (find dari paket findutils/GNU Find).
mas vavai keren nih..sangat membantu membersihkan file di server yang lebih dari 3 tahun…ajibb..tks mas