Cara Membatasi Jumlah File Backup di Google Drive secara Otomatis

Salinan dari GCP

Bulan Juli lalu CyberPanel merilis versi terbaru yaitu versi stabil 2.0.2. Salah satu fitur baru yang dimiliki CyberPanel adalah backup rutin ke Google Drive. Tentu saja ini adalah fitur yang sudah ditunggu-tunggu sejak lama oleh pengguna CyberPanel. Saya pun segera mengupgrade CyberPanel agar bisa mencicipi fitur tersebut.

Kenapa backup ke Google Drive?

Dengan Google Drive maka proses restore-backup menjadi lebih mudah karena bisa diakses lewat dashboard Drive. Bahkan Anda bisa langsung membagi tautan backup kepada client. Sehingga client memiliki akses langsung ke backup. Selain itu biaya untuk menyediakan server backup bisa ditekan.

Meskipun demikian, ternyata proses backup CyberPanel ke Google Drive masih memiliki kelemahan. Kelemahan utama yang saya rasakan adalah kapasitas Drive yang saya miliki berkurang secara drastis. Rupanya CyberPanel belum menyediakan fungsi pembatasan jumlah backup. Namun tidak perlu khawatir, karena permasalahan tersebut bisa diatasi dengan menggunakan fungsi Google Script.

Yang dibutuhkan

Pastikan Anda telah menyambungkan CyberPanel dengan Akun Google lalu telah mengatur backup ke mode harian. Tunggu beberapa hari sampai folder backup muncul di Google Drive. Tulisan ini hanya terbatas pada cara membatasi jumlah folder backup pada Google Drive secara otomatis, hal-hal tentang CyberPanel maupun Google Script tidak dibahas lebih detail.

Langkah-langkah

Buka Google Script lalu buat proyek baru. Yang perlu Anda perhatikan adalah akun Google Drive yang Anda gunakan harus sama dengan akun Google Script tersebut. Selanjutnya copy-paste kode di bawah ini.

function deleteOldSheets() {
var df = DriveApp.getFolderById("your-backup-folder-id");
var arr = new Array();
var folders = df.getFolders();
while( folders.hasNext() ) {
var f = folders.next();
arr.push( [ [ f.getId() ] , [ f.getLastUpdated() ] ] );
}
arr.sort( sortFunction );
for( var i=14 ; i<arr.length ; i++ )
DriveApp.getFolderById( arr[i][0] ).setTrashed( true );
};
function sortFunction( a , b ) {
var aDate = new Date(a[1]);
var bDate = new Date(b[1]);
if ( aDate === bDate ) return 0;
else if ( aDate < bDate ) return 1;
else return 1;
};

Ganti ‘your-backup-folder-id’ dengan id folder yang bisa Anda lihat di URL. Kode di atas membatasi jumlah folder maksimal 14 folder. Anda dapat mengubah jumlah folder maksimal dengan mengganti angka 14. Setelah itu silahkan Anda setting supaya script tersebut dieksekusi setiap hari.

Jika jumlah folder yang ada di folder backup lebih dari 14 maka folder lama akan dihapus/dipindah ke trash. Perlu Anda ketahui bahwa Google Drive tidak menghapus folder yang ada di trash secara otomatis. Jadi Anda perlu membuat project baru di Google Script untuk menghapus file di trash secara otomatis.

Buka kembali Google Script lalu buat project baru. Pastikan Anda telah mengaktifkan API Google Drive dengan cara klik Sumber Daya > Layanan Lanjutan Google > aktifkan Google Drive API. Setelah itu copy-paste kode di bawah ini.

function DeleteTrashedFiles(){
Drive.Files.emptyTrash();
};

Atur supaya script tersebut dijalankan otomatis setiap hari. Cara yang ada pada tutorial ini juga bisa diaplikasikan untuk menghapus folder backup yang lain, tidak terbatas pada folder backup CyberPanel saja.

Referensi

http://igoogledrive.blogspot.com/2017/02/google-script-to-auto-delete-old-files.html

https://stackoverflow.com/questions/25749906/permanently-delete-file-from-google-drive/32749203#32749203