Cara Otomatis Restore Backup Website aaPanel di Server Linux via Shell Script

Cara Otomatis Restore Backup Website aaPanel di Server Linux via Shell Script

Jika Anda menggunakan aaPanel untuk mengelola website di server Linux, tentu sudah familiar dengan fitur backup otomatis yang disediakan oleh panel tersebut. Namun bagaimana jika Anda ingin melakukan restore secara manual (misalnya dalam jumlah banyak), atau menggunakan script agar lebih cepat dan efisien?

Pada artikel ini, saya membagikan bagaimana saya melakukan restore backup website dari aaPanel secara otomatis menggunakan bash script. Metode ini sangat berguna ketika Anda:

  • Mengelola banyak domain di satu server
  • Ingin melakukan restore massal tanpa membuka aaPanel satu per satu
  • Mengandalkan terminal/SSH untuk efisiensi

Struktur Backup dari aaPanel

Saat Anda melakukan backup di aaPanel (secara manual atau otomatis), biasanya file backup akan tersimpan di direktori seperti /www/backup/site, dengan nama file seperti ini:

web_domain.com_20251004_013134_xxxxx.tar.gz

Masing-masing domain punya folder backup sendiri, dan setiap file di dalamnya berisi backup full dari direktori website domain tersebut.

Langkah Restore Otomatis

Saya menggunakan dua script bash untuk melakukan proses ini:


1. Script list_backup.sh

Script ini akan menampilkan file backup terbaru dari masing-masing domain. Cocok untuk mengecek apakah backup sudah tersedia dan lengkap sebelum mulai restore.

#!/bin/bash

BASE_DIR="/www/backup/site"

for folder in "$BASE_DIR"/*; do
    if [ -d "$folder" ]; then
        latest_file=$(ls "$folder"/*.tar.gz 2>/dev/null | \
            awk -F'_' '
                {
                    match($0, /_[0-9]{8}_[0-9]{6}/, a)
                    if (a[0] != "") {
                        gsub("_", "", a[0])
                        print a[0], $0
                    }
                }
            ' | sort -k1 -r | head -n1 | cut -d' ' -f2-)

        if [ -n "$latest_file" ]; then
            echo "[$(basename "$folder")]: $latest_file"
        fi
    fi
done

Contoh output:

[domain1.com]: /www/backup/site/domain1.com/web_domain1.com_20251004_013134.tar.gz
[domain2.com]: /www/backup/site/domain2.com/web_domain2.com_20251004_013136.tar.gz
...

2. Script extract.sh (Restore Script)

Script ini adalah inti dari proses restore. Ia akan mengekstrak file backup terbaru dari setiap domain ke direktori target di /www/wwwroot/[domain]. Proses ini akan mengembalikan file website seperti semula.

#!/bin/bash

BASE_DIR="/www/backup/site"
TARGET_BASE="/www/wwwroot"

for folder in "$BASE_DIR"/*; do
    if [ -d "$folder" ]; then
        latest_file=$(ls "$folder"/*.tar.gz 2>/dev/null | \
            awk -F'_' '
                {
                    match($0, /_[0-9]{8}_[0-9]{6}/, a)
                    if (a[0] != "") {
                        gsub("_", "", a[0])
                        print a[0], $0
                    }
                }
            ' | sort -k1 -r | head -n1 | cut -d' ' -f2-)

        if [ -n "$latest_file" ]; then
            domain_name=$(basename "$folder")
            target_dir="$TARGET_BASE/$domain_name"

            echo "➤ Extracting to $target_dir ..."
            tar -xzf "$latest_file" -C "$target_dir"
        fi
    fi
done

Contoh output saat dijalankan:

➤ Extracting to /www/wwwroot/domain1.com ...
➤ Extracting to /www/wwwroot/domain2.com ...
...

Integrasi dengan aaPanel

aaPanel sebenarnya menyediakan fitur restore dari antarmuka web, tapi kalau kamu memiliki puluhan atau ratusan domain, tentu sangat memakan waktu jika dilakukan satu per satu.

Dengan script ini, kamu bisa mengotomatisasi proses restore backup dari aaPanel hanya dengan satu perintah saja:

bash extract.sh

Catatan penting: Sebelum menjalankan script restore ini, pastikan domain sudah dibuat terlebih dahulu di dashboard aaPanel. Hal ini penting karena script akan mengekstrak file backup ke folder target sesuai nama domain di /www/wwwroot/[domain]. Jika folder ini belum ada, proses ekstraksi akan gagal atau tidak berjalan sesuai harapan.

Jadi urutan yang benar adalah:

  1. Buat domain di aaPanel (dashboard) seperti biasa
  2. Upload file backup ke folder backup (biasanya di /www/backup/site/[domain])
  3. Jalankan script extract.sh untuk restore secara otomatis

Dengan begitu, proses restore berjalan lancar dan file website langsung berada di lokasi yang tepat.

إرسال تعليق

0 تعليقات