Panduan Lengkap Backup WordPress Otomatis ke Google Drive dengan Rclone di Ubuntu Server

Backup adalah bagian penting dalam pengelolaan website. Dalam panduan ini, Anda akan belajar bagaimana cara melakukan backup otomatis website ke Google Drive menggunakan Rclone, systemd, dan cron di server Linux. Panduan ini ideal untuk Anda yang menjalankan WordPress atau aplikasi berbasis Docker.
Persyaratan ๐
- Akun Google Drive aktif
- Rclone terinstal di server Linux
- Browser di komputer lokal (Windows/Linux/macOS) untuk otentikasi Google
- Website terletak di direktori lokal (contoh:
/home/andika/www.masdika.biz.id
) - Database berjalan dalam container Docker (contohnya MariaDB/MySQL dengan Docker Compose)
1. Instal dan Konfigurasi Rclone ๐ฆ
a. Instalasi Rclone
sudo apt update
sudo apt install rclone -y
b. Konfigurasi Remote Google Drive ๐งฉ
- Jalankan perintah konfigurasi:
rclone config
- Pilih
n
untuk membuat konfigurasi baru. - Masukkan nama remote:
gdrive
- Pilih penyimpanan:
drive
(Google Drive) - Kosongkan client_id dan client_secret (kecuali Anda ingin pakai OAuth pribadi)
- Pilih scope
1
untuk akses penuh - Jawab
n
untuk advanced config - Saat diminta URL, salin URL dan buka di browser komputer lokal (Windows) untuk login dan otorisasi akun Google Anda
- Setelah login, salin kode verifikasi ke terminal Linux Anda
- Pilih
y
untuk menyimpan konfigurasi
Setelah selesai, Anda dapat memverifikasi koneksi:
rclone lsd gdrive:
2. Buat Folder Backup di Google Drive ๐
Untuk merapikan struktur penyimpanan:
rclone mkdir gdrive:MASDIKA.BIZ.ID
3. Script Backup Otomatis ๐ป
Backup ini mencakup:
- File-file penting WordPress dan Docker di direktori
/home/andika/www.masdika.biz.id
- Database MySQL yang berjalan dalam container Docker
- File hasil backup dikompres dalam format ZIP
Buat file skrip baru:
sudo nano /usr/local/bin/backup-masdika.sh
Isi dengan:
#!/bin/bash
# Variabel
DATE=$(date +"%Y-%m-%d_%H-%M")
PROJECT_DIR="/home/andika/www.masdika.biz.id"
TMP_DIR="/tmp"
BACKUP_DIR="gdrive:MASDIKA.BIZ.ID"
BACKUP_NAME="backup_$DATE"
DB_CONTAINER="wordpress-frankenphp-mysql"
DB_NAME="db_wordpress"
DB_USER="user"
DB_PASS="password"
# Lokasi sementara
SQL_FILE="$TMP_DIR/${BACKUP_NAME}_db.sql"
ZIP_FILE="$TMP_DIR/${BACKUP_NAME}.zip"
echo "[INFO] Membuat backup database..."
docker exec $DB_CONTAINER mysqldump -u$DB_USER -p$DB_PASS $DB_NAME > "$SQL_FILE"
echo "[INFO] Mengarsipkan file ke ZIP..."
zip -r "$ZIP_FILE" \
"$PROJECT_DIR/wordpress" \
"$PROJECT_DIR/data" \
"$PROJECT_DIR/docker-compose.yml" \
"$PROJECT_DIR/Dockerfile" \
"$PROJECT_DIR/Caddyfile" \
"$PROJECT_DIR/my.cnf" \
"$SQL_FILE"
echo "[INFO] Mengupload ke Google Drive..."
rclone copy "$ZIP_FILE" "$BACKUP_DIR" --transfers=4 --progress
echo "[INFO] Membersihkan file sementara..."
rm "$SQL_FILE" "$ZIP_FILE"
echo "[SELESAI] Backup selesai: $BACKUP_NAME.zip"
Lalu beri izin eksekusi:
chmod +x /usr/local/bin/backup-masdika.sh
4. Systemd Service Mount Google Drive ๐
Buat unit file systemd:
sudo nano /etc/systemd/system/rclone-gdrive.service
Isi dengan:
[Unit]
Description=Mount Google Drive (rclone) to /mnt/gdrive
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/bin/rclone mount gdrive: /mnt/gdrive \
--config=/root/.config/rclone/rclone.conf \
--vfs-cache-mode=writes \
--vfs-cache-max-size=100M \
--dir-cache-time=72h \
--poll-interval=15s \
--umask=002 \
--allow-other
Restart=on-failure
RestartSec=10
[Install]
WantedBy=default.target
Aktifkan service:
sudo systemctl daemon-reload
sudo systemctl enable rclone-gdrive
sudo systemctl start rclone-gdrive
Pastikan mount berhasil:
systemctl status rclone-gdrive
5. Jalankan Manual untuk Uji Coba ๐งช
backup-masdika.sh
Periksa apakah file ZIP muncul di Google Drive Anda.
6. Menjadwalkan Backup Otomatis Harian ๐
Edit crontab:
crontab -e
Tambahkan baris berikut untuk menjadwalkan backup setiap jam 2 pagi:
0 2 * * * /usr/local/bin/backup-masdika.sh >> /var/log/backup-masdika.log 2>&1
Tips untuk File Backup Besar ๐ฆ
- Gunakan opsi
--transfers=4
untuk paralel upload - Kompres ke ZIP dahulu sebelum mengupload untuk efisiensi
- Gunakan direktori
/tmp
untuk penyimpanan sementara agar lebih cepat
Dengan langkah ini, Anda telah memiliki sistem backup otomatis ke Google Drive yang aman dan efisien ๐ช. Sangat cocok untuk proyek berbasis Docker seperti WordPress dengan FrankenPHP. Jangan lupa untuk sesekali cek hasil backup Anda agar selalu up to date. ๐
Selamat mencoba! ๐
Thankyou mas, udah berbagi.