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
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
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.
2. Selanjutnya pilih region mana data Anda akan disimpan.
3. Selanjutnya copy Origin Endpoint ke text.
4. Masuk ke halaman utama spaces, lalu klik API page.
5. Generate access key.
6. Copy Access key dan Secret pada text. Note, ada dua key yang Anda copy.
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.
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.
Periksa bucket DigitalOcean Anda, di sana akan ada file yang sudah Anda upload melalui terminal (hello.txt).
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.
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
Periksa S3 compatible storage Anda, file backup seharusnya sudah muncul.
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, Advanced → Cron 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
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.