Backup Semua Web dan Database Menggunakan Script Bash: Perbedaan antara revisi
(←Membuat halaman berisi 'Buat file berikut ini di path mana saja dalam server misalkan diberi nama backup_website_database.zip') |
Tidak ada ringkasan suntingan |
||
| (4 revisi perantara oleh pengguna yang sama tidak ditampilkan) | |||
| Baris 1: | Baris 1: | ||
Buat file berikut ini di path mana saja dalam server misalkan diberi nama backup_website_database.zip | 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 | |||
<code>chmod +x backup_website_database.zip.sh</code> | |||
Jalankan dengan perintah | |||
<code>./backup_website_database_zip.sh</code> | |||
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. | |||
file akan tersimpan di path root atau jika ingin langsung menuju lokasi folder yang dibuat dengan cara mengetikkan perintah | |||
<code>cd \</code> (enter) | |||
jika berhasil disitu akan terlihat folder backup_cyberpanel | |||
[[Kategori:ASJ TKJ]] | |||
Revisi terkini sejak 2 Juni 2025 03.57
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.
file akan tersimpan di path root atau jika ingin langsung menuju lokasi folder yang dibuat dengan cara mengetikkan perintah
cd \ (enter)
jika berhasil disitu akan terlihat folder backup_cyberpanel