Bash, Linux, Server, Sysadmin, Tutorial, Ubuntu, Wordpress

Shell Script Backup Website Linux Ubuntu

Shell Script atau ada juga yang menyebutnya sebagai bash script merupakan sebuah bahasa pemrograman yang di rancang untuk berjalan pada unix shell...

· 3 min read >
shell script backup website linux ubuntu akm.web.id aris krisna

Shell Script atau ada juga yang menyebutnya sebagai bash script merupakan sebuah bahasa pemrograman yang di rancang untuk berjalan pada unix shell yang berupa command line interpreter (Wikipedia).

Bahasa mudahnya shell script ini adalah sebuah rangkaian kode yang dapat kita buat dan jalankan pada komputer dengan basis linux atau unix, yang mana itu meliputi semua distro linux yang tersedia di pasaran sekarang dan juga dapat berjalan pada MacOS.

Kita dapat memanipulasi sesuai dengan kemauan dan kebutuhan kita sebagai seorang sysadmin. Pada contoh kasus artikel ini, kita akan sama-sama membuat sebuah script yang akan di gunakan untuk mem-backup data blog akm.web.id. Ada beberapa tahapan yang akan kita jalankan bersama-sama, diantaranya adalah membuat script backup, lalu mencoba menjalankannya, mengirimkan hasil backup pada external storage server, kemudian melihat hasil backup tersebut.

Satu: Membuat Shell Script

Untuk membuat script sesuai kebutuhan kita, kita dapat melihat refrensi dari doc ubuntu server yang sudah tersedia. Selain backup file website, saya juga backup database dari website tersebut.

Pertama kita akan membuat file dengan format .sh dengan perintah;

nano tarik.sh

Nama file boleh di ganti-ganti sesuai keinginan, dengan catatan harus berakhiran .sh. Kemudian disini saya juga telah menyesuaikan dan menambahkan bahkan mengganti beberapa parameter sesuai dengan kebutuhan saya pribadi, sehingga di hasilkan sebuah script backup sebagai berikut;

#!/bin/bash

#lokasi folder backup
loc1="/home/akm.web.id/public_html"

#lokasi penampungan sementara
loctampung="/root"

#waktu
day=$(date +%A-%d-%B-%Y)

#atribut zip
com1="$day-akm.web.id.zip"

#atribut database
db1="$day-db_akm.web.id.sql"

#folder tampungan 
foldertampung="Backup-server-akm-$day"
mkdir -p $loctampung/$foldertampung

echo
echo
echo "#################### Mulai proses backup file web ############################"
sleep 2
echo
echo

zip -r $loctampung/$foldertampung/$com1 $loc1

echo
echo
echo "#################### Berhasil tarik file web ##################################"
sleep 2
echo
echo

echo
echo
echo "############################ Mulai tarik db ####################################"
sleep 2

a=$(mysqldump -u userdb -ppassword namadb > $loctampung/$foldertampung/$db1)

echo
echo
echo "############################ Berhasil tarik db ^^, ####################################"
sleep 2
echo
echo

echo
echo
echo "############################ Kirim backup ####################################"
sleep 2

rsync -za --progress -e 'ssh -p 22' $loctampung/$foldertampung user@ipserverbackup:/lokasi/ke/folder/backup

echo
echo
echo "####################### Berhasil kirim backup #################################"
echo
sleep 2
echo
echo


ls -lah
sleep 7
echo "################################## Hapus folder yang sudah di kirim ############################"
rm -rf $loctampung/$foldertampung

echo
echo
echo "################################## Backup Selesai !! ############################"
sleep 3
exit 0

Masing-masing komponen dalam script di atas dapat di jelaskan sebagai berikut;

  • loc1="/home/akm.web.id/public_html" : ini merupakan lokasi dari file website yang akan saya backup. Jangan lupa untuk menyesuaikan sesuai dengan keadaan pada infrastruktur kamu.
  • loctampung="/root" : lokasi sementara file yang sudah terbackup.
  • day=$(date +%A-%d-%B-%Y) : format tanggal dan waktu yang akan kita ambil sesuai waktu server.
  • com1="$day-akm.web.id.zip" : nama file backup dalam bentuk zip.
  • db1="$day-db_akm.web.id.sql" : nama file backup database dengan format sql.
  • foldertampung="Backup-server-akm-$day" : nama folder untuk menampung file backup web dan database.
  • mkdir -p $loctampung/$foldertampung : membuat folder penampungan file backup web dan database.
  • echo : untuk print baris kosong.
  • sleep 2 : eksekusi program akan di berhentikan selama 2 detik.
  • zip -r $loctampung/$foldertampung/$com1 $loc1 : mengkompresi file website dan menyimpan pada folder tampung secara recusive.
  • a=$(mysqldump -u userdb -ppassword namadb > $loctampung/$foldertampung/$db1) : membuat file dump database dan menyimpan pada folder tampung
  • rsync -za --progress -e 'ssh -p 22' $loctampung/$foldertampung user@ipserverbackup:/lokasi/ke/folder/backup : mengirim file beserta folder tampung ke eksternal storage. Ini bertujuan agar tidak memenuhi server website.
  • rm -rf $loctampung/$foldertampung : menghapus folder tampung yang berisi file dan database website yang sudah di kirim ke eksternal storage.
  • exit 0 : mengakhiri proses program.

Dua: Menjalankan Shell Script Backup

Setelah kamu selesai membuat script, selanjutnya jangan lupa untuk di save dengan menekan kombinasi tombol CTRL + X lalu pilih Y pada keyboard untuk menyimpan perubahan. Untuk menjalankan script backup, mempunyai 2 buah opsi, yaitu;

Opsi 1: Mengganti Permission File

Opsi pertama yaitu dengan mengganti permission file tarik.sh menjadi executable yang artinya dapat di execute atau di jalankan secara langsung. Kamu dapat menggantinya dengan perintah;

chmod +x tarik.sh

Setelah itu tinggal eksekusi file tarik.sh dengan perintah;

./tarik.sh

Opsi 2: Menggunakan Bash Untuk Menjalankan Shell Script

Opsi kedua yaitu dengan menggunakan perintah bash. Jika di perhatikan lagi pada script yang kita buat, kita mendeklarasikan !/bin/bash pada baris pertama. Deklarasi tersebut menandakan bahwa susunan code yang ada di bawah !/bin/bash kita tulis dalam format bash. Maka selain mengganti permission file, kita juga dapat menjalankan file tarik.sh dengan perintah;

bash tarik.sh

Atau dapat juga di singkat menjadi;

sh tarik.sh

Baca: Schedule Backup Menggunakan Cronjob

Tiga: Mengirim Hasil Backup

Untuk menghemat pemakaian storage dari server web kita, kita dapat mengirimkan file backup ke eksternal server dengan menggunakan rsync. Rsync sendiri tools yang tersedia hampir pada semua distro linux. Untuk penjelasan lebih banyak mengenai rsync, kamu dapat membaca artikel saya tentang Rsync Command: Simple Practice for Beginners.

Dalam kasus kali ini saya menggunakan perintah;

rsync -za --progress -e 'ssh -p 22' $loctampung/$foldertampung user@ipserverbackup:/lokasi/ke/folder/backup

Empat: Melihat Isi File Backup

Nah setelah proses kirim selesai, kita akan coba lihat apa saja yang sudah kita dapatkan dari proses backup yang sudah kita lakukan sebelumnya. Dalam kasus ini maka saya mendapatkan sebuah file .zip dengan isi file website yang saya backup dan juga sebuah database dump dari website tersebut dengan format .sql.

Kesimpulan

Jadi pada artikel kali ini kita sudah dapat membuat sebuah script untuk backup file website beserta databasenya. Perlu di ingat bahwa pada penerapannya tidak selalu hanya di gunakan sebatas backup website dan database saja, tapi dapat pula untuk keperluan lain. Hal tersebut kembali lagi kepada kita sebagai sysadmin sebagai penentu. Silahkan di coba dan di modifikasi sesuai dengan kebutuhan kamu.

Leave a Reply

Your email address will not be published. Required fields are marked *