Saya Beruntung Hanya Kehilangan Beberapa Giga Data

Bekerja dengan linux server itu perlu ketelitian. Bagaimana tidak, coba kita lihat beberapa waktu yang lalu, gitlab sempat beberapa jam down karena ada sedikit kesalahan, begitu juga Amazon AWS yang sempat down dan membuat sekian persen situs internet tidak bisa diakse, dan beberapa kisah lainnya.

Bahkan saya juga mengalaminya hari ini. Seluruh file di home directory yang berumur lebih dari 30 hari terhapus. Penyebabnya simple, ada satu bug yang tidak kelihatan tapi fatal di bash script untuk backup yang saya buat. Script yang harusnya membackup web file dan konfigurasi server, malah berbalik menghapus file-file yang ada dan membuat beberapa web saya tidak dapat bejalan dengan benar.

Backup script yang saya buat:

Bug adalah hal biasa dalam membuat program. Bahkan kadang muncul dalam script yang sederhana sekalipun. Script diatas dapat berjalan normal jika semuanya lancar. Tapi semua berubah ketika mediafire-fuse nya sudah berjalan tanpa flag tertentu.

Tanpa diberi flag/options tertentu, seperti allow-root atau allow-other, mount point mediafire-fuse (dalam script diatas /media/mediafire) hanya bisa diakses oleh user, bahkan root pun tidak bisa masuk. Karena backup perlu mengcopy web file dan konfigurasi server, maka harus dijalankan oleh root. Lalu karena mediafire-fuse sudah berjalan dengan user saya tanpa flag apapun, backup script tidak bisa masuk ke mediafire-fuse mount point. Di sinilah bugnya.

Begitu tidak bisa masuk mount point (line 62), maka direktori kerja (working directory) tetap berada dimana saya mengeksekusi backup script-nya (dalam hal ini home directory saya). dan melanjutkan perintah selanjutnya (line 63) yaitu ‘find -type f -mtime +30 -delete’ yang menghapus semua file yang berumur lebih dari 30 hari. Seandainya bisa masuk mediafire-fuse mount point, maka yang akan terhapus adalah backup yang berusia lebih dari satu bulan.

Yah, saya beruntung hanya beberapa giga file di home direktori yang terhapus. Coba bayangkan jika direktori kerja yang saya gunakan bukanlah home direktori tapi root direktori dengan superuser (sudo). Bukan hanya file di home direktori yang hilang, tapi seluruh file di server saya yang lenyap.

 

Leave a Reply