Cara Backup Website dan Database di Debian 9 Server

cara-backup-website-database-debian-9.png

Melakukan backup website dan database yang sudah berjalan di server sangat penting, karena hasil backup dapat dipergunakan jika terjadi insiden keamanan yang tidak diinginkan. Contoh insiden yang bisa saja terjadi, website menjadi korban hacking, website terkena malware, atau bahkan kesalahan dari pemilik website sendiri (tidak sengaja menghapus file atau database).

*0. Persiapan Backup*

Sebelum melakukan backup, pastinya harus tahu dulu apa dan di mana data yang mau dibackup dan ke mana hasil backup mau disimpan.

Tutorial sebelumnya pada pembahasan install WordPress, *file website WordPress* yang berada di */var/www/wordpress.oke* dan *database MariaDB* dengan *nama database wordpress* yang ingin dibackup.

Untuk tempat penyimpanan backup, telah disediakan partisi backup pada saat install Debian 9 server. Partisi backup ini termount di */backup*.

*1. Backup Website*

Backup website dapat dilakukan dengan berbagai cara, tergantung dengan kebutuhannya seperti apa.

*Cara 1. Kompresi File* Kompresi file cocok jika ingin mendownload file backup ke komputer. Format kompresi yang digunakan di sini adalah format .tar.gz.

Format perintah membuat kompresi .tar.gz.

[INPUT]

1 tar czvf output.tar.gz sumber-direktori

Jadi perintah untuk backup file website WordPress.

[INPUT]

1 2 cd /var/www/ tar czvf /backup/wordpress.oke.tar.gz wordpress.oke

· Pindah ke direktori /var/www terlebih dahulu agar hasil kompresi tidak memasukkan struktur direktori /var/www/wordpress.oke tetapi hanya menjadi wordpress.oke saja. · File hasil kompresi wordpress.oke.tar.gz tersimpan di direktori /backup.

*Cara 2. Sinkronisasi File/Direktori* Cara lain yang bisa digunakan yaitu dengan melakukan sinkronisasi file/direktori dari direktori sumber backup ke direktori backup. Perintah yang digunakan untuk melakukan hal ini adalah *rsync*.

Dengan sinkronisasi rysnc, ketika menjalankan sinkronisasi pertama kali semua file dicopy ke direktori backup, tetapi ketika menjalankan sinkronisasi selanjutnya yang dicopy hanya file baru dan yang berubah saja. Sehingga tidak semua file copy secara berulang, seperti perintah copy biasa *cp*.

Format perintah sinkronsasi dengan rsync.

[INPUT]

1 rsync -av /sumber/direktori /tujuan/direktori –delete

Jadi perintah untuk sinkronisasi file website WordPress.

[INPUT]

1 rsync -av /var/www/wordpress.oke /backup –delete

· Sinkronisasi direktori wordpress.oke ke direktori backup. Kalau penulisan direktori memakai slash penutup (wordpress.oke/) maka yang tercopy adalah isi dari direktori itu, kalau tidak memakai penutup yang dicopy direktori itu beserta isinya. · Opsi –delete untuk menghapus file yang berada di direktori backup jika file di direktori sumber wordpress.oke telah terhapus. Karena jika tidak memakai opsi –delete, file yang sudah terhapus di direktori wordpress.oke masih tetap ada di direktori backup.

*Cara 3. Sinkronisasi File/Direktori Secara Real-Time* Sinkronisasi file dengan rsync hanya bisa terjadi jika telah menjalankan perintah rsync. Bagaimana jika ingin sinkronisasi terjadi secara otomatis ketika terjadi perubahan file? Dengan kata lain sinkronisasi file secara real-time.

Solusinya bisa dengan menggunakan sinkronisasi *lsyncd*. Sinkronisasi lsyncd berjalan sebagai service (daemon) yang selalu memantau perubahan data sumber backup. lsyncd melakukan sinkronisasi file secara penuh, baik itu file baru, file yang berubah, dan file yang terhapus.

Install lsyncd.

[INPUT]

1 apt install lsyncd

Buat direktori untuk menyimpan isi dari direktori wordpress.oke

[INPUT]

1 mkdir /backup/wordpress.oke

Buat direktori dan file log lsyncd.

[INPUT]

1 2 mkdir /var/log/lsyncd touch /var/log/lsyncd/lsyncd.{log,status}

Buat direktori dan file konfigurasi lsyncd.

[INPUT]

1 2 mkdir /etc/lsyncd nano /etc/lsyncd/lsyncd.conf.lua

Isi dari file konfigurasi lsyncd.conf.lua.

[INPUT]

1 2 3 4 5 6 7 8 9 10 settings {         logfile = “/var/log/lsyncd/lsyncd.log”,         statusFile = “/var/log/lsyncd/lsyncd.status” }   sync {         default.rsync,         source = “/var/www/wordpress.oke”,         target = “/backup/wordpress.oke”, }

Restart service lsyncd.

[INPUT]

1 systemctl restart lsyncd

*3. Backup Database*

Selanjutnya adalah melakukan backup database. Tanpa database, file wordpress yang sudah terbackup menjadi percuma. Karena konten atau postingan dan data lainnya berada di dalam database. Perintah yang digunakan untuk melakukan backup database MariaDB adalah *mysqldump*.

Buat file konfigurasi mysqldump yang menyimpan username dan password database.

[INPUT]

1 nano /etc/.mysqldump-wordpress.cnf

Isi file konfigurasi mysqldump.

[INPUT]

1 2 3 [mysqldump] user=user_wordpress password=pass_wordpress

Ubah hak akses agar hanya root yang bisa membaca.

[INPUT]

1 chmod 600 /etc/.mysqldump-wordpress.cnf

Selanjutnya menjalankan perintah backup.

[INPUT]

1 mysqldump –defaults-extra-file=/etc/.mysqldump-wordpress.cnf wordpress > /backup/wordpress.sql

*4. Backup Website dan Database Secara Otomatis*

Backup harus dilakukan secara rutin, namun sebagai manusia kita ini mudah lupa, kadang juga terkendala oleh situasi dan waktu, sehingga backup harusnya bisa terjadi secara otomatis tanpa campur tangan kita lagi. Hal ini dapat dilakukan dengan mengkombinasikan *bash script* dan *cron job/crontab*.

Bash script berfungsi sebagai program kecil yang berisi perintah backup. Sementara untuk crontab berfungsi sebagai penjadwalan otomatis, menentukan waktu kapan bash script dijalankan.

*Membuat Bash Script Backup* Perintah backup website yang digunakan dalam bash script adalah rsync karena masih harus dijalankan secara manual. Untuk backup database tetap menggunakan mysqldump.

Membuat file bash script dengan nano. Penjelasan tentang bash script baca di artikel Shell Script di Linux.

[INPUT]

1 nano /opt/backup.sh

Isi dari file bash script backup.sh.

[INPUT]

1 2 3 4 5 6 7 #!/bin/bash   # Backup direktori wordpress.oke rsync -av /var/www/wordpress.oke /backup –delete   # Backup database wordpress mysqldump –defaults-extra-file=/etc/.mysqldump-wordpress.cnf wordpress > /backup/wordpress.sql

Uji coba menjalankan script backup.

[INPUT]

1 bash /opt/backup.sh

Jika sudah cocok, selanjutnya konfigurasi crontab.

[INPUT]

1 crontab -e

Misalnya mau backup setiap hari pada jam 24.00. Penjelasan penulisan format waktu baca di artikel Crontab, Penjadwalan Secara Otomatis di Linux.

[INPUT]

1 * * * /bin/bash /opt/backup.sh

Selamat mencoba 🙂

Leave a Reply

Your email address will not be published.

scroll to top