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:
- Buat domain di aaPanel (dashboard) seperti biasa
- Upload file backup ke folder backup (biasanya di
/www/backup/site/[domain]
) - Jalankan script
extract.sh
untuk restore secara otomatis
Dengan begitu, proses restore berjalan lancar dan file website langsung berada di lokasi yang tepat.
0 Komentar