Backup Semua Web dan Database Menggunakan Script Bash

Dari Dokumentasi Robie
Loncat ke navigasi Loncat ke pencarian

Buat file berikut ini di path mana saja dalam server misalkan diberi nama backup_website_database.zip

Isi file bash adalah sebagai berikut


#!/bin/bash

# Direktori tempat website berada
WEB_DIR="/home"

# Direktori tujuan backup
BACKUP_DIR="/root/backup_cyberpanel"
DATE=$(date +"%Y%m%d%H%M")
LOG_FILE="$BACKUP_DIR/backup_$DATE.log"

# Folder yang harus diabaikan (tidak perlu dibackup)
EXCLUDE=("cyberpanel" "docker" "vmail")

# Buat direktori backup jika belum ada
mkdir -p "$BACKUP_DIR"

# Daftar folder website (abaikan folder sistem & EXCLUDE)
SITES=($(ls -l $WEB_DIR | awk '{print $9}' | grep -v '^$' | grep -v '^\.' | grep -vE "$(IFS=\|; echo "${EXCLUDE[*]}")"))

# Fungsi logging
log() {
    echo "[$(date +"%Y-%m-%d %T")] $1" | tee -a "$LOG_FILE"
}

log "Backup dimulai..."

for SITE in "${SITES[@]}"; do
    SITE_PATH="$WEB_DIR/$SITE"
    
    if [ -d "$SITE_PATH" ]; then
        log "Memproses website: $SITE"

        # Backup file website dalam format .zip
        FILE_BACKUP="$BACKUP_DIR/$SITE.files.$DATE.zip"
        zip -r "$FILE_BACKUP" "$SITE_PATH" >> "$LOG_FILE" 2>&1
        if [ $? -eq 0 ]; then
            log "Backup file berhasil: $FILE_BACKUP"
        else
            log "Gagal membuat backup file untuk $SITE"
        fi
    fi
done

# Backup semua database MySQL/MariaDB
log "Memulai backup semua database..."
DB_BACKUP="$BACKUP_DIR/all_databases.$DATE.sql.gz"
mysqldump --all-databases | gzip > "$DB_BACKUP" 2>> "$LOG_FILE"
if [ $? -eq 0 ]; then
    log "Backup semua database berhasil: $DB_BACKUP"
else
    log "Gagal membuat backup semua database"
fi

log "Backup selesai."

Simpan dan ubah hak akses menggunakan perintah

chmod +x backup_website_database.zip.sh


Jalankan dengan perintah

./backup_website_database_zip.sh


Jika berjalan akan muncul tampilan proses backup website dan database seperti tampilan berikut


[2025-06-02 03:41:43] Backup dimulai...

[2025-06-02 03:41:43] Memproses website: dinda.elektronik

[2025-06-02 03:41:43] Backup file berhasil: /root/backup_cyberpanel/dinda.elektronik.files.202506020341.zip

[2025-06-02 03:41:43] Memproses website: elektronik.dinda

[2025-06-02 03:41:44] Backup file berhasil: /root/backup_cyberpanel/elektronik.dinda.files.202506020341.zip

[2025-06-02 03:41:44] Memproses website: jualelektronik.smekta

[2025-06-02 03:41:44] Backup file berhasil: /root/backup_cyberpanel/jualelektronik.smekta.files.202506020341.zip

[2025-06-02 03:41:44] Memproses website: toko.elektronik

[2025-06-02 03:41:44] Backup file berhasil: /root/backup_cyberpanel/toko.elektronik.files.202506020341.zip

[2025-06-02 03:41:44] Memulai backup semua database...

[2025-06-02 03:42:24] Backup semua database berhasil: /root/backup_cyberpanel/all_databases.202506020341.sql.gz

[2025-06-02 03:42:24] Backup selesai.