Tutorial

Laravel Backup ke Google Drive: Panduan Lengkap Implementasi dan Konfigurasi

D
Donar Azhar
19 Feb 2026 297 views
Laravel Backup ke Google Drive: Panduan Lengkap Implementasi dan Konfigurasi

🔐 Mengapa Backup Itu Penting?

Bayangkan skenario ini: website Anda sudah berjalan berbulan-bulan, ratusan artikel sudah dipublikasi, data pengguna sudah terkumpul, lalu suatu hari... server crash. Database corrupt. Semua data hilang dalam sekejap.

Tanpa backup, Anda hanya bisa pasrah. Dengan backup yang teratur, Anda bisa memulihkan semuanya dalam hitungan menit.

Dalam artikel ini, saya akan membagikan cara mengimplementasikan sistem backup otomatis di Laravel yang langsung tersimpan di Google Drive — gratis, aman, dan bisa diakses dari mana saja.


📋 Arsitektur Sistem

Sistem backup yang kita bangun memiliki arsitektur sebagai berikut:

  • BackupController — Menangani logika create, list, download, dan delete backup
  • GoogleDriveServiceProvider — Menghubungkan Laravel Filesystem dengan Google Drive API
  • Flysystem Adapter — Library yang menjembatani Laravel Storage dengan Google Drive
  • Admin UI — Halaman admin untuk mengelola backup secara visual

Alur kerjanya sederhana:

  1. Admin klik "Buat Backup" di panel admin
  2. Sistem melakukan database dump (SQL)
  3. File SQL diupload ke Google Drive
  4. File temporary lokal dihapus
  5. Admin bisa download atau hapus backup kapan saja

🛠️ Langkah 1: Instalasi Package

Kita menggunakan package masbug/flysystem-google-drive-ext sebagai adapter Flysystem untuk Google Drive. Install via Composer:

composer require masbug/flysystem-google-drive-ext

Package ini akan otomatis menginstall dependensi yang diperlukan:

  • google/apiclient — Google API Client Library
  • google/apiclient-services — Google Drive Service
  • firebase/php-jwt — JWT token handling
  • phpseclib/phpseclib — PHP Secure Communications Library

🔑 Langkah 2: Konfigurasi Google Cloud Console

Ini bagian yang paling krusial. Anda perlu membuat OAuth2 credentials di Google Cloud Console.

2.1 Buat Project

  1. Buka Google Cloud Console
  2. Klik "New Project"
  3. Beri nama, misalnya: "MyBlog Backup"
  4. Klik "Create"

2.2 Aktifkan Google Drive API

  1. Navigasi ke APIs & Services → Library
  2. Cari "Google Drive API"
  3. Klik "Enable"

2.3 Konfigurasi OAuth Consent Screen

  1. Buka APIs & Services → OAuth consent screen
  2. Pilih "External"
  3. Isi nama aplikasi dan email
  4. Di bagian "Test users", tambahkan email Google Anda
  5. Klik "Save"

💡 Tips: Untuk penggunaan pribadi, Anda tidak perlu memverifikasi app ke Google. Mode "Testing" sudah cukup — cukup pastikan email Anda terdaftar sebagai test user.

2.4 Buat OAuth2 Credentials

  1. Buka APIs & Services → Credentials
  2. Klik "+ CREATE CREDENTIALS" → "OAuth client ID"
  3. Pilih tipe: Web Application
  4. Tambahkan Authorized Redirect URI: https://developers.google.com/oauthplayground
  5. Klik "Create"
  6. Catat Client ID dan Client Secret

2.5 Dapatkan Refresh Token

  1. Buka OAuth Playground
  2. Klik ⚙️ Settings → centang "Use your own OAuth credentials"
  3. Masukkan Client ID dan Client Secret dari langkah sebelumnya
  4. Di panel kiri, pilih: Google Drive API v3 → https://www.googleapis.com/auth/drive
  5. Klik "Authorize APIs" → Login dan klik "Allow"
  6. Klik "Exchange authorization code for tokens"
  7. Salin Refresh Token (dimulai dengan 1//...)

2.6 Siapkan Folder Google Drive

  1. Buka Google Drive
  2. Buat folder baru, misalnya: "MyBlog Backups"
  3. Buka folder tersebut
  4. Lihat URL di browser: https://drive.google.com/drive/folders/FOLDER_ID_NYA
  5. Salin bagian setelah /folders/ — itu adalah Folder ID

⚙️ Langkah 3: Konfigurasi Laravel

3.1 Environment Variables

Tambahkan ke file .env:

GOOGLE_DRIVE_CLIENT_ID=your-client-id
GOOGLE_DRIVE_CLIENT_SECRET=your-client-secret
GOOGLE_DRIVE_REFRESH_TOKEN=your-refresh-token
GOOGLE_DRIVE_FOLDER_ID=your-folder-id

3.2 Filesystem Disk

Tambahkan disk google di config/filesystems.php:

'google' => [
    'driver' => 'google',
    'clientId' => env('GOOGLE_DRIVE_CLIENT_ID'),
    'clientSecret' => env('GOOGLE_DRIVE_CLIENT_SECRET'),
    'refreshToken' => env('GOOGLE_DRIVE_REFRESH_TOKEN'),
    'folder' => env('GOOGLE_DRIVE_FOLDER_ID'),
],

3.3 Service Provider

Buat GoogleDriveServiceProvider yang mendaftarkan driver google ke Laravel Filesystem. Provider ini menggunakan Google API Client untuk autentikasi OAuth2 dan membuat Flysystem adapter.

Poin penting dalam implementasi:

  • Gunakan fetchAccessTokenWithRefreshToken() untuk mendapatkan access token dari refresh token
  • Tambahkan error handling untuk mendeteksi token yang invalid atau expired
  • Daftarkan provider di bootstrap/providers.php

🎮 Langkah 4: BackupController

Controller ini menangani semua operasi backup:

Fitur-fitur:

1. List Backups — Mengambil daftar file backup dari Google Drive, menampilkan nama file, ukuran, dan tanggal. Diurutkan dari yang terbaru.

2. Create Backup — Proses pembuatan backup:

  • Dump database menggunakan mysqldump (jika tersedia)
  • Jika mysqldump tidak ditemukan, gunakan PHP-based dump sebagai fallback
  • Simpan file SQL sementara di local storage
  • Upload ke Google Drive menggunakan Storage::disk('google')
  • Hapus file temporary

3. Download Backup — Mengambil file dari Google Drive dan mengirimkannya sebagai response download.

4. Delete Backup — Menghapus file backup dari Google Drive.

PHP-Based Database Dump

Tidak semua server memiliki akses ke binary mysqldump. Oleh karena itu, kami implementasikan fallback berbasis PHP yang:

  • Mengambil daftar semua tabel menggunakan SHOW TABLES
  • Untuk setiap tabel, mengambil CREATE TABLE statement
  • Mengekspor semua data baris per baris dengan INSERT INTO statement
  • Menangani foreign key constraints dengan SET FOREIGN_KEY_CHECKS=0

🎨 Langkah 5: Admin Panel UI

Halaman backup di admin panel menampilkan:

  • Status koneksi — Hijau jika terhubung, merah jika ada error
  • Tombol "Buat Backup Baru" — Satu klik untuk membuat dan upload backup
  • Tabel daftar backup — Menampilkan nama file, ukuran, tanggal, dan aksi (download/hapus)
  • Panduan setup — Otomatis muncul jika Google Drive belum dikonfigurasi

Fitur UX yang Penting

  • Tombol "Buat Backup" otomatis disabled saat diklik (mencegah double-click)
  • Konfirmasi sebelum menghapus backup
  • Empty state yang informatif ketika belum ada backup
  • Panduan setup lengkap langsung di halaman (tanpa perlu buka dokumentasi terpisah)

🔒 Keamanan

Beberapa hal penting terkait keamanan:

  • Credentials di .env — Client ID, Secret, dan Refresh Token disimpan di file .env yang tidak ter-commit ke Git
  • Auth middleware — Semua route backup dilindungi middleware auth, hanya admin yang bisa mengakses
  • Scope minimal — Gunakan scope drive.file agar app hanya bisa mengakses file yang dibuatnya sendiri (bukan seluruh Google Drive Anda)
  • Testing mode — App tidak perlu diverifikasi Google karena hanya digunakan secara pribadi

🚀 Deploy ke Server

Untuk deploy ke server production:

  1. Pull kode terbaru dari repository
  2. Jalankan composer install untuk menginstall package baru
  3. Tambahkan 4 variabel Google Drive ke file .env di server
  4. Clear config cache: php artisan config:clear
  5. Buka halaman backup di admin panel untuk verifikasi

💡 Tips: Gunakan Refresh Token yang sama untuk lokal dan server. Tidak perlu membuat credentials terpisah — satu set credentials bisa digunakan di banyak server.


📝 Best Practices

1. Backup Secara Rutin

Idealnya, buat backup minimal 1x sehari. Untuk traffic tinggi, buat backup setiap beberapa jam. Anda bisa mengotomasi ini dengan Laravel Scheduler:

// app/Console/Kernel.php
$schedule->call(function () {
    app(BackupController::class)->create();
})->daily();

2. Retention Policy

Jangan biarkan backup menumpuk tanpa batas. Terapkan retention policy — misalnya, hanya simpan backup 30 hari terakhir, hapus yang lebih lama secara otomatis.

3. Test Restore

Backup yang tidak pernah di-test restore-nya sama saja dengan tidak punya backup. Secara berkala, download backup dan coba restore ke database test untuk memastikan file backup valid.

4. Monitor Google Drive Storage

Google Drive menyediakan 15 GB gratis. File backup SQL biasanya berukuran kecil (beberapa MB), tapi pastikan storage tidak penuh.


🏁 Kesimpulan

Dengan sistem backup ke Google Drive ini, data website Anda terlindungi dari:

  • ✅ Server crash atau hardware failure
  • ✅ Kesalahan manusia (accidental delete)
  • ✅ Serangan hacker atau ransomware
  • ✅ Masalah hosting provider

Implementasinya cukup straightforward — install satu package, buat beberapa file, konfigurasi OAuth2, dan sistem backup Anda siap. Investasi waktu 1-2 jam untuk ketenangan pikiran selamanya.

Semoga panduan ini bermanfaat! Jangan lupa untuk segera membuat backup pertama Anda setelah implementasi. 🚀

Wallahu a'lam bishawab.

Share this article

Related Articles

Continue reading with these related posts