Gratis update & dukungan instalasi

Panduan 08 Oct 2026

Cara Backup Otomatis Website Laravel: Database & File (Panduan 2026)

R Oleh renz mobellgnd
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:

  1. 3 salinan data: 1 data produksi + 2 backup.
  2. 2 media berbeda: misalnya server hosting dan hard disk eksternal.
  3. 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
Databaseserver database (MySQL)semua data aplikasi
File storage/appdirektori projectupload user, lampiran
File .envroot projectkredensial & konfigurasi
Source coderoot projectkode 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

php artisan make:command BackupWebsite

Isi method handle() dengan logika backup:

public function handle()
{
$date = now()->format('Y-m-d_H-i');
$backupDir = storage_path("app/backups/{$date}");
mkdir($backupDir, 0755, true);

// 1. Dump database
$db = config('database.connections.mysql.database');
$user = config('database.connections.mysql.username');
$pass = config('database.connections.mysql.password');
exec("mysqldump -u{$user} -p'{$pass}' {$db} | gzip > {$backupDir}/database.sql.gz");

// 2. Arsipkan file penting (storage, .env, public uploads)
$project = base_path();
exec("tar -czf {$backupDir}/files.tar.gz -C {$project} storage .env public/uploads");

$this->info("Backup selesai: {$backupDir}");
}
Catatan keamanan: jangan menulis password database secara hardcoded di command. Kode di atas mengambilnya dari config() yang membaca .env — cara yang benar. Ini juga bagian dari mengamankan website setelah beli source code: file .env tidak boleh bisa diakses publik, jadi direktori backups/ sebaiknya di bawah storage/app (tidak terekspos web), bukan di public/.

Langkah 2: Jadwalkan lewat Scheduler

Di Laravel 11+, buka routes/console.php dan tambahkan:

use Illuminate\Support\Facades\Schedule;

Schedule::command('app:backup-website')->dailyAt('02:00');

Langkah 3: Aktifkan cron satu baris di hosting

Tambahkan satu baris ini ke Cron Jobs di cPanel (sesuaikan path PHP dan project):

* * * * * /usr/local/bin/ea-php83 /home/username/project/artisan schedule:run >> /dev/null 2>&1

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:

DATE=$(date +%Y-%m-%d)
BACKUP_DIR=/home/username/backups/$DATE
mkdir -p $BACKUP_DIR

# Dump database
mysqldump -u dbuser -p'dbpassword' dbname | gzip > $BACKUP_DIR/database.sql.gz

# Arsipkan file website
tar -czf $BACKUP_DIR/files.tar.gz -C /home/username/laravel-project storage .env public/uploads

# Hapus backup lokal yang lebih tua dari 7 hari (hemat disk)
find /home/username/backups -maxdepth 1 -type d -mtime +7 -exec rm -rf {} \;

Jadikan executable (chmod +x backup.sh), lalu daftarkan di Cron Jobs cPanel:

0 2 * * * bash /home/username/backup.sh >> /home/username/backups/backup.log 2>&1

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:

  1. Install Rclone di server/VPS, lalu hubungkan ke Google Drive (rclone config, ikuti wizard OAuth).
  2. Tambahkan satu baris di akhir script backup untuk mengunggah:
rclone copy $BACKUP_DIR gdrive:/backup-laravel/$(date +%Y-%m-%d) --bwlimit 2M
  1. Opsi --bwlimit 2M membatasi 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:

  1. Buat database kosong baru.
  2. Restore file dump: gunzip < database.sql.gz | mysql -u user -p dbname_baru.
  3. Ekstrak files.tar.gz ke project staging.
  4. Jalankan php artisan migrate --force dan 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 hariSetiap hari
Company profile (jarang berubah)MingguanMingguan
Blog / berita (konten rutin)Setiap hariMingguan

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

  1. Menyimpan backup di folder public/. File .sql dan .env yang bisa diunduh siapa pun adalah mimpi buruk keamanan.
  2. Tidak pernah menghapus backup lama. Disk penuh = website down. Terapkan retensi (misalnya 7 hari lokal, 30 hari di cloud).
  3. Hanya backup database. File upload user dan .env sering terlupakan.
  4. Tidak mencatat kredensial restore. Simpan daftar database, user, dan lokasi backup di tempat aman.
  5. 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.