Cara Backup Otomatis Website Laravel: Database & File (Panduan 2026)
Cara Backup Otomatis Website Laravel: Database & File (Panduan 2026)
Baru saja membeli source code atau selesai deploy website Laravel? Kabar buruknya: satu kali salah ketik perintah, satu update gagal, atau satu kali akun hosting kena suspend — semua data bisa hilang dalam sekejap. Kabar baiknya: Laravel punya semua alat yang Anda butuhkan untuk membangun sistem backup otomatis, dan panduan ini menunjukkan caranya langkah demi langkah.
Berbeda dengan backup manual lewat phpMyAdmin yang sering terlupakan, backup otomatis berjalan sesuai jadwal — harian, mingguan, atau bahkan per jam — tanpa Anda harus mengingatnya. Mari mulai dari konsepnya dulu, lalu praktikkan.
Prinsip 3-2-1: fondasi setiap strategi backup
Sebelum masuk ke teknis, pahami dulu prinsip 3-2-1 yang dipakai praktisi IT di seluruh dunia:
- 3 salinan data: 1 data produksi + 2 backup.
- 2 media berbeda: misalnya server hosting dan hard disk eksternal.
- 1 salinan di luar lokasi: misalnya Google Drive, S3, atau storage cloud lain.
Artinya, backup yang hanya disimpan di folder yang sama dengan website tidak cukup. Kalau server-nya down, backup-nya ikut hilang. Artikel ini membimbing Anda memenuhi ketiga poin di atas.
Bagian yang wajib di-backup di website Laravel
Banyak yang berpikir "backup database saja cukup". Padahal untuk bisa memulihkan website Laravel secara utuh, Anda butuh empat komponen ini:
| Komponen Lokasi Isi | ||
| Database | server database (MySQL) | semua data aplikasi |
File storage/app | direktori project | upload user, lampiran |
File .env | root project | kredensial & konfigurasi |
| Source code | root project | kode aplikasi |
Praktik terbaik: arsipkan ketiga file di atas (selain database) menjadi satu file .tar.gz per tanggal backup, lalu dump database menjadi .sql.gz. Format terkompresi membuat ukuran backup jauh lebih kecil dan upload ke cloud lebih cepat.
Opsi 1: Backup otomatis dengan Laravel Scheduler (cara termudah)
Jika website Anda sudah bisa menjalankan cron satu baris (di shared hosting maupun VPS), ini cara paling rapi. Kita buat satu artisan command yang melakukan backup, lalu jadwalkan lewat Laravel Scheduler.
Langkah 1: Buat command backup
Isi method handle() dengan logika backup:
Catatan keamanan: jangan menulis password database secara hardcoded di command. Kode di atas mengambilnya dariconfig()yang membaca.env— cara yang benar. Ini juga bagian dari mengamankan website setelah beli source code: file.envtidak boleh bisa diakses publik, jadi direktoribackups/sebaiknya di bawahstorage/app(tidak terekspos web), bukan dipublic/.
Langkah 2: Jadwalkan lewat Scheduler
Di Laravel 11+, buka routes/console.php dan tambahkan:
Langkah 3: Aktifkan cron satu baris di hosting
Tambahkan satu baris ini ke Cron Jobs di cPanel (sesuaikan path PHP dan project):
Untuk VPS, gunakan crontab biasa seperti dijelaskan di panduan deploy Laravel ke VPS Ubuntu. Satu baris cron ini cukup — Laravel yang menentukan kapan command backup benar-benar dijalankan.
Opsi 2: Backup otomatis murni lewat cron cPanel (tanpa Scheduler)
Kalau Anda lebih nyaman dengan cara klasik, cron cPanel bisa menjalankan backup langsung dengan satu script shell. Buat file backup.sh di luar public_html:
Jadikan executable (chmod +x backup.sh), lalu daftarkan di Cron Jobs cPanel:
Jadwal 0 2 * * * artinya setiap hari pukul 02:00 — jam sepi pengunjung. Sesuaikan dengan jam traffic terendah website Anda.
Opsi 3: Kirim backup ke Google Drive secara otomatis
Ingat prinsip 3-2-1: salinan di server saja belum cukup. Alat gratis paling populer untuk mengunggah backup ke cloud dari server adalah Rclone (mendukung Google Drive, Dropbox, OneDrive, S3, dan lainnya).
Alurnya sederhana:
- Install Rclone di server/VPS, lalu hubungkan ke Google Drive (
rclone config, ikuti wizard OAuth). - Tambahkan satu baris di akhir script backup untuk mengunggah:
- Opsi
--bwlimit 2Mmembatasi kecepatan upload agar website tidak melambat saat backup berjalan.
Alternatif tanpa install apa pun: banyak panel seperti aaPanel punya fitur "Backup to Google Drive" bawaan di menu Cron. Kalau hosting Anda memakai panel semacam itu, manfaatkan saja.
Jangan lewatkan: uji restore backup Anda
Backup yang tidak pernah diuji sama dengan tidak punya backup. Minimal sebulan sekali, lakukan uji pemulihan di lingkungan staging atau lokal:
- Buat database kosong baru.
- Restore file dump:
gunzip < database.sql.gz | mysql -u user -p dbname_baru. - Ekstrak
files.tar.gzke project staging. - Jalankan
php artisan migrate --forcedan cek apakah aplikasi berjalan normal.
Kalau suatu hari website Anda tiba-tiba menampilkan error 500 setelah upload ke hosting, backup yang sudah teruji inilah yang menyelamatkan Anda dari kepanikan.
Jadwal backup yang direkomendasikan
| Tipe website Database File | ||
| Toko online / kasir (transaksi harian) | Setiap hari | Setiap hari |
| Company profile (jarang berubah) | Mingguan | Mingguan |
| Blog / berita (konten rutin) | Setiap hari | Mingguan |
Satu catatan: sebelum menjalankan optimasi database MySQL yang mengubah struktur tabel, selalu buat backup manual dulu. Optimasi yang salah bisa merusak data — dan backup adalah jaring pengaman Anda.
Kesalahan umum yang harus dihindari
- Menyimpan backup di folder
public/. File.sqldan.envyang bisa diunduh siapa pun adalah mimpi buruk keamanan. - Tidak pernah menghapus backup lama. Disk penuh = website down. Terapkan retensi (misalnya 7 hari lokal, 30 hari di cloud).
- Hanya backup database. File upload user dan
.envsering terlupakan. - Tidak mencatat kredensial restore. Simpan daftar database, user, dan lokasi backup di tempat aman.
- Backup manual "nanti saja". Justru karena manual, ia tidak pernah dikerjakan. Otomatiskan.
Penutup
Backup otomatis bukan fitur mewah — ini kebutuhan dasar setiap website Laravel yang sudah online, apalagi yang datanya menghasilkan uang. Mulailah dari Opsi 1 atau 2 hari ini, tambahkan upload ke Google Drive minggu ini, dan uji restore bulan ini. Butuh source code website Laravel yang sudah siap produksi lengkap dengan fitur backup? Jelajahi katalog produk di kioskoding.com.
Artikel Terkait
Cara Menghubungkan Domain ke Hosting: Panduan Lengkap DNS & Nameserver (2026)
08 Oct 2026
Cara Membuat REST API Laravel untuk Aplikasi Mobile: Panduan Lengkap 2026
07 Oct 2026
Cara Deploy Laravel ke VPS Ubuntu: Panduan Lengkap Naik Kelas dari Shared Hosting (2026)
06 Oct 2026
Cara Mengatasi Error 500 Setelah Upload Website ke Hosting (Checklist 10 Langkah 2026)
06 Oct 2026