Cara backup remote lengkap di VPS , cloud file dan database + cronjob
Data penting khususnya file app, database (mysql) wajib dibackup menjadi jika terjadi server down, rusak atau sistem VPS terkena malware, serangan cyber lainya karena tidak ada sistem yang aman sehingga backup menjadi solusi no.1
Backup menggunakan server VPS cadangan menyimpan file backup, teknik menggunakan backup crontab otomatis dan system rsync memindahkan data secara cepat ke server cadangan.
Table of Contents
Persiapan backup data VPS
Panduan ini menggunakan server jenis VPS OS Linux database Mysql , web server Apache2
- Buat 1 VPS Backup : lokasi Indonesia.
- VPS aktif (Vps Kerja) : Lokasi Singapore.
Seting Time Zone
Bertujuan jadwal cronjob tepat waktu dengan jam lokal khususnya Indonesia UTC +7 bisa seting pada bagian TZ dengan mengubah:
masuk ssh :
ssh root@IP_address
Tambahkan kode:
sudo timedatectl set-timezone Asia/Jakarta
Buat folder backup Transit
Masuk SSH buat folder backup baru:
mkdir /var/file_backup mkdir /var/db_backup
Seting CronJob
install cron
melalui apt
.
sudo apt update
sudo apt install cron
info cron job : pengaturan dan konfigurasi cron job dengan aplikasi crontab
Backup Mysql Server Transit
Perintah di ssh server:
crontab -e
Tambahkan perintah berikut:
0 1 * * * mysqldump -u nam_user toko_db > /var/backup/toko_db_$(date +\%Y-\%m-\%d).sql.gz
Statement di atas akan menginstruksi cron
untuk membackup database toko_db
setiap 1 hari sekali pada jam 00 / 12 malam.
Penjelasan:
- Ganti jam 2 pagi bisa ubah menjadi: 0 2 * * *
- Arti lokasi folder : /var/backup (disesuikan dengan lokasi folder data vps masing2)
- Ganti nama toko_db (database name)
Jika terjadi gagal backup mysqldum…
Hapus file Backup Mysql lama
Supaya data file backup tidak menumpung banyak, Buat automatis hapus backup data mysql :: Skip delete file 1 hari terakhir, untuk menghapus file secara rutin, tambahkan perintah di atas di dalam crontab
.
0 3 * * * find /var/db_backup -name "*.gz" -type f -mtime +0 -exec rm -f {} \;
Note:
- Jika ingin ganti jam bisa ubah :
0 3 * * *
- Pastikan jam hapus file setelah semua proses backup selesai.
- Optinal – Ubah extensi name * .qz
- Seting tanggal terakhir di hapus +0 // artinya 1 hari terakhir
Backup File Transit
Backup semua file kompress file & hapus file backup lam terjadwal crontab:
crontab -e
Tambahkan kode:
0 1 * * * tar -zcvpf /var/file_backup/all_backup_$(date +\%Y-\%m-\%d).tar.gz -P /var/www/ 0 3 * * * find /var/file_backup -name "*.gz" -type f -mtime +0 -exec rm -f {} \;
Pada tahap ini backup file, database dan hapus terjadwal selesai, selanjutnya .. tahap backup remote ke server VPS cadangan.
Remote Backup Full VPS
Install SSH-keygen, berfungsi koneksi 2 vps tanpa harus masukan password manual sehingga proses sinkron data bisa berjalan menggunakan cronjob.
Pelajari panduan dibawa..
Buat Folder Backup VPS Cadangan:
- mkdir /var/file_backup
- mkdir /var/db_backup
Setelah VPS kerja vs VPS cadangan terkoneksi SSH keygen maka tinggal seting kode sinkron data terjadwal cronjob, masuk kembali pada VPS kerja SSH:
0 2 * * * rsync -azP --delete -e 'ssh -i ~/.ssh/id_rsa_rsync' /var/db_backup/ root@IP_AddressVpsBackup:/var/db_backup/ 0 2 * * * rsync -azP --delete -e 'ssh -i ~/.ssh/id_rsa_rsync' /var/file_backup/ root@IP_AddressVpsBackup:/var/file_backup/
Catatan: seting cronjob pada jam 2 dini hari, artinya backup file terjadi pada VPS kerja adalah jam 01 pagi dan proses telah selesai.
Hapus File Lama backup VPS Cadangan
Setelah backup berhasil, guna menjaga data backup tidak overload perlu dihapus file lama, proses sama dengan langkah hapus di VPS kerja.
Masuk SSH pada SSH cadangan, masuk ke : crontab -e , tambahkan kode:
0 3 * * * find /var/file_backup -name "*.gz" -type f -mtime +0 -exec rm -f {} \; 0 3 * * * find /var/file_backup -name "*.gz" -type f -mtime +0 -exec rm -f {} \;
Restore VPS
Proses restore mengembalikan data backup kedalam sistem yang berjalan, ada 2 data : file app, database.
Jika file database besar (big data) lebih dari > 1Gb gunakan monitor progress, install pv pada server ubuntu:
apt install pv
gunzip < /var/db_backup/nama_db.sql.gz | pv | mysql -u username [dbname]
Restore File berkas data:
tar -xvpzf /var/backups/namafile.tar.gz -P /var/www
SELESAI.