Backup otomatis WordPress dari cPanel ke S3 compatible storage

Dua minggu lalu saya sempat menulis bagaimana caranya backup WordPress tanpa plugin dari cPanel ke Dropbox. Hanya saja memiliki satu kelemahan, upload di-limit maksimal 250MB.

Bagaimana jika ada cara yang sama, tetapi tanpa limit 250MB?

Ya, kali ini saya akan menunjukan cara tersebut. Yang perlu Anda persiapkan hanyalah akses cPanel dan S3 compatible storage, seperti AWS S3 atau DigitalOcean Spaces yang saya pakai di tutorial ini.

Untuk hosting saya memakai HawkHost standard, bukan vps ataupun dedicated hosting.

Install AWS CLI di cPanel

gambar 1. Advanced → Terminal
gambar 1. AdvancedTerminal

Akan muncul layar hitam, layar ini biasa disebut terminal atau console. Di terminal Anda bisa memasukan perintah-perintah linux. Kali ini kita akan meng-install AWS CLI.

1. Download dan unzip AWS CLI

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip

2. Install AWS CLI

./aws/install --install-dir ~/aws-cli --bin-dir ~/aws-cli/bin

3. Masukan ke directory bin PATH

echo 'export PATH=~/aws-cli/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

4. Periksa apakah sudah terinstall

aws --version
gambar 2. Periksa apakah AWS CLI sudah terinstall atau belum
gambar 2. Periksa apakah AWS CLI sudah terinstall atau belum

Siapkan S3 compatible storage

Di sini saya memakai DigitalOcean Spaces, jika Anda belum punya silahkan registrasi melalui link ini dan Anda akan mendapatkan free credit sebesar 200 USD.

1. Pada DigitalOcean, klik Create Spaces Bucket.

gambar 3. Buat bucket storage
gambar 3. Buat bucket storage

2. Selanjutnya pilih region mana data Anda akan disimpan.

gambar 4. Pilih region space storage
gambar 4. Pilih region space storage

3. Selanjutnya copy Origin Endpoint ke text.

gambar 5. Copy origin endpoint
gambar 5. Copy origin endpoint

4. Masuk ke halaman utama spaces, lalu klik API page.

gambar 6. Klik API page pada halaman utama Spaces
gambar 6. Klik API page pada halaman utama Spaces

5. Generate access key.

gambar 7. Generate New Key
gambar 7. Generate New Key

6. Copy Access key dan Secret pada text. Note, ada dua key yang Anda copy.

gambar 8. Copy Access key dan Secret, simpan pada text
gambar 8. Copy Access key dan Secret, simpan pada text

Selesai, pada tahap ini Anda sudah tahu apa S3 endpoint, access key, dan secret key. Key tersebut selanjutnya akan kita pakai untuk credential upload backup ke Spaces.

Setup AWS CLI

Masuk kembali ke console di cPanel. Selanjutnya kita akan configure AWS CLI agar bisa berkomunikasi dengan DigitalOcean spaces.

1. Jalankan perintah configure dengan AWS CLI.

aws configure

2. Isi prompt dengan data yang sudah Anda simpan sebelumnya.

gambar 9. AWS CLI setup configuration
gambar 9. AWS CLI setup configuration

Sesuaikan AWS Access Key ID dan AWS Secret Access Key dengan yang sudah Anda generate dan simpan di text sebelumnya. Note, gambar 9 di atas hanyalah contoh.

3. Test upload ke S3 compatible storage.

touch hello.txt
AWS_CA_BUNDLE="" aws --endpoint-url=https://com.titiknadi.sgp1.digitaloceanspaces.com s3 cp ~/hello.txt s3://hello.txt

Ganti endpoint https://com.titiknadi.sgp1.digitaloceanspaces.com dengan endpint yang sudah Anda simpan sebelumnya.

gambar 10. Test upload ke DigitalOcean spaces
gambar 10. Test upload ke DigitalOcean spaces

Periksa bucket DigitalOcean Anda, di sana akan ada file yang sudah Anda upload melalui terminal (hello.txt).

gambar 10. File yang diupload muncul di dashboard Spaces
gambar 10. File yang diupload muncul di dashboard Spaces

Selesai. Tahap selanjutnya yang paling seru. Upload file backup ke DigitalOcean spaces.

Upload backup WordPress dan SQL

Kita sudah memiliki semua tools yang diperlukan. Sekarang bagian paling seru, backup WordPress ke DigitalOcean spaces.

Sebelum backup dimulai, ada beberapa hal yang perlu Anda siapkan, seperti nama database, user, dan password. Anda bisa mencari tahu informasi-informasi tersebut di wp-config.php.

Script yang akan kita buat adalah sebagai berikut:

#!/bin/bash

PREFIX=titiknadi.com
WORDPRESS_LOCATION=/home/nadiarc1/sites/titiknadi.com
S3_ENDPOINT=https://com.titiknadi.sgp1.digitaloceanspaces.com

mkdir -p ~/wordpress-backups/${PREFIX}
tar -zcvf ~/wordpress-backups/${PREFIX}/web.tar.gz ${WORDPRESS_LOCATION}
AWS_CA_BUNDLE="" aws --endpoint-url=${S3_ENDPOINT} s3 cp ~/wordpress-backups/${PREFIX}/web.tar.gz s3://wordpress-backups/web.tar.gz
rm ~/wordpress-backups/${PREFIX}/web.tar.gz

DB_NAME=
DB_USER=
DB_PASSWORD=

mysqldump -u ${DB_USER} -p${DB_PASSWORD} ${DB_NAME} | gzip -c > ~/wordpress-backups/${PREFIX}/${DB_NAME}.sql.gz
AWS_CA_BUNDLE="" aws --endpoint-url=${S3_ENDPOINT} s3 cp ~/wordpress-backups/${PREFIX}/${DB_NAME}.sql.gz s3://wordpress-backups/${DB_NAME}.sql.gz
rm ~/wordpress-backups/${PREFIX}/${DB_NAME}.sql.gz

Isi DB_NAME, DB_USER, DB_PASSWORD, PREFIX, WORDPRESS_LOCATION, dan S3_ENDPOINT sesuai dengan data yang Anda miliki. Di atas hanyalah contoh.

gambar 11. backup.sh
gambar 11. backup.sh

Melalui file manager cPanel Anda simpan kode di atas dengan nama backup.sh.

File backup.sh ini akan kita coba jalankan dari console nantinya.

Sekarang buka kembali console cPanel Ada. Sebelum dijalankan tambahkan perintah dibawah.

chmod +x backup.sh

Untuk menjalankan script, kita cukup masukan perintah seperti di bawah:

./backup.sh
video 1. Proses upload ke S3 compatible storage

Periksa S3 compatible storage Anda, file backup seharusnya sudah muncul.

gambar 12. File backup sudah muncul di bucker DigitalOcean Spaces
gambar 12. File backup sudah muncul di bucker DigitalOcean Spaces

Automate dengan cron jobs

Tahap terakhir adalah membuat agar semua proses backup terjadi secara berkala dan otomatis. Tentu kita tidak ingin menjalankan manual setiap kali hendak melakukan backup.

Di cPanel, kita bisa memanfaatkan fitur Cron Jobs. Dengan fitur ini kita bisa mengatur ingin kapan saja menjalankan suatu script. Dalam contoh ini saya melakukannya setiap satu hari sekali.

1. Buka Cron Jobs, AdvancedCron Jobs.

gambar 13. Buka Advanced → Cron Jobs
gambar 13. Buka AdvancedCron Jobs

Pada bagian Common Settings Anda bisa memilih akan seberapa sering script dijalankan. Dalam case saya, saya menjalankannya Once per Day.

Dibagian bawah, pada bagian Command, masukan ~./backup.sh

gambar 14. Add New Cron Job
gambar 14. Add New Cron Job

Simpan Cron Jobs dengan klik Add New Cron Job.

**

Selesai, Anda sudah bisa worry-free jika terjadi sesuatu dengan hosting Anda. Backup dengan cara seperti ini jauh lebih murah dibandingkan dengan subscription plugin backup wordpress. Di sini Anda tidak dibatasi domain apa saja yang bisa Anda backup.

Tinggalkan komentar