Cara Membackup File dan Database di Linux Menggunakan FTP

Beberapa waktu lalu, server Vultr mengalami kegagalan sehingga data customer hilang. Dalam hal ini, sebenarnya provider tidak dapat dituntut bila di bagian pernyataan layanan ( terms of service) ada pernyataan bahwa “kehilangan data bukan tanggung jawab kami [provider], sehingga backup harus dilakukan secara mandiri oleh pemilik website.”

Bila server mengalami kegagalan, dan kita tidak punya backup maka untuk mengembalikkannya tentu sangat susah. Dengan kata lain, sebagai pemilik website kita harus melakukan backup sendiri terhadap website kita. Bahkan untuk shared hosting yang menyediakan backup, customer pun sebaiknya juga melakukan backup untuk menghindari kejadian yang tidak diinginkan.

Jadi, sedia payung sebelum hujan.

Nah, kalau pakai shared hosting cPanel, maka backupnya mudah saja, tinggal klik klik di menu backup, selesai. Tetapi bagaimana kalau itu VPS ? Ya mudah juga, kita tinggal pakai metode backup FTP.

Sebenarnya, ada beberapa cara yang bisa dilakukan untuk melakukan backup yaitu dengan membackupnya di cloud storage semacam Google Storage, Dropbox dan lain sebagainya atau dengan membeli FTP backup.

Pada panduan kali ini, saya hanya menjelaskan singkat cara backup file dan database di GNU / Linux menggunakan metode FTP

Panduan Membackup File dan Folder

Konsep dalam melakukan backup sangatlah sederhana, kita hanya perlu melakukan kompres data dalam bentuk .tar.gz atau .zip  kemudian kita upload ke FTP backup yang sudah kita beli. Untuk database, kita tinggal melakukan export database kemudian diupload ftp.

Itu bisa dilakukan secara manual. Tetapi, kan akan sedikit menyusahkan bila kita harus mengulangi langkah – langkah yang sama secara berulang kali. Jadi, otomatis lebih bagus.

1. Backup File dan Folder

Seperti yang sudah saya sampaikan diatas, kita akan melakukan backup terlebih dahulu terhadap file dan folder website.

Buat file sh nya dengan cara mengetikkan nano file_backup.sh Silahkan copy dan paste skrip dibawah :

#!/bin/sh

# Linux FTP Backup Script
# Version: 1.0
# Script by: Pietro Marangon
# Skype: pe46dro
# Email: pietro.marangon@gmail.com

clean_backup() {
  rm -f ./$FILE
  echo 'Local Backup Removed'
}

########################
# Edit Below This Line #
########################

# FTP Login Data
USERNAME="USERNAME HERE"
PASSWORD="PASSWORD HERE"
SERVER="IP HERE"
PORT="REMOTE SERVER PORT"

#Directory where thing to backup is located
DIR="/root"

#Remote directory where the backup will be placed
REMOTEDIR="./"

#Filename of backup file to be transfered DON'T WRITE EXTENSION (.tar/.zip/ecc...)
FILE="BACKUP_NAME"

#Transfer type
#1=FTP
#2=SFTP
TYPE=1 

##############################
# Don't Edit Below This Line #
##############################

d=$(date --iso)

FILE=$FILE"_"$d".tar.gz"
tar -czvf ./$FILE $DIR
echo 'Tar Complete'

if [ $TYPE -eq 1 ]
then
ftp -n -i $SERVER <<EOF
user $USERNAME $PASSWORD
binary
put $FILE $REMOTEDIR/$FILE
quit
EOF
elif [ $TYPE -eq 2 ]
then
rsync --rsh="sshpass -p $PASSWORD ssh -p $PORT -o StrictHostKeyChecking=no -l $USERNAME" $FILE $SERVER:$REMOTEDIR
else
echo 'Please select a valid type'
fi

echo 'Remote Backup Complete'
clean_backup
#END

Skrip tersebut saya ambil dari GitHub. Jadi, bagi yang tidak ingin copy paste bisa menggunakan perintah gitclone

Konfigurasi Backup File dan Folder

Variabel yang perlu disesuaikan adalah sebagai berikut :

1. Login Detail ke Server FTP Backup

FTP Login Data
USERNAME="USERNAME HERE"
PASSWORD="PASSWORD HERE"
SERVER="IP HERE"
PORT="REMOTE SERVER PORT"

Silahkan sesuaikan username, password, ip dan port di FTP backup yang sudah Anda beli

2. Direktori yang ingin dibackup

#Directory where thing to backup is located 
DIR="/home/username/website/public_html"

Silahkan isi dengan direktori mana yang ingin Anda backup

3. Direktori FTP Backup

#Remote directory where the backup will be placed
REMOTEDIR="./"

Silahkan diisi sesuai keinginan dimana kita ingin menyimpan folder backup tersebut di FTP server yang kita beli

4. Konfigurasi Nama Backup

#Filename of backup file to be transfered DON'T WRITE EXTENSION (.tar/.zip/ecc...) 
FILE="BACKUP_NAME"

Silahkan diisi nama dengan nama file backupnya. Ingat, ekstensi file seperti .tar .zip dan lain sebagainya tidak perlu dimasukkan. Jadi, masukkan nama saja

5. FTP Setting

#Transfer type 
#1=FTP 
#2=SFTP 
TYPE=1

Melalui variabel ini, kita bisa setting dengan cara apa kita akan mengirim backup yang sudah dibuat. Bagi yang tidak familiar dengan SFTP, setting saja dengan nomor default yaitu TYPE = 1 .

Setelah konfigurasi selesai, silahkan tekan tombol CTRL + X kemudian tekan tombol Y untuk menyimpan skrip backup. Setelah itu, kita masukkan perintah chmod+x [nama_skrip].sh

Bila sudah, maka kita tinggal tes apakah konfigurasi skrip sudah benar atau belum. Caranya, kita eksekusi saja langsung dengan cara memasukkan perintah sh [nama_skrip].sh

Kalau tidak ada error, berarti backup berhasil. Untuk memastikan apakah backup sudah dikirim ke server FTP, maka silahkan cek kembali apakah file backup sudah ada disana atau belum.

Panduan Membackup Database

Sama seperti cara diatas, sekarang kita buat file bashnya dengan cara mengetikkan nano backup_database.sh, kemudian masukkan skrip berikut :

#!/bin/bash

######################################################
# Script Written by : Rahul Kumar
# Date: Feb 21, 2013
######################################################

DATE=`date +%d%b%y`
LOCAL_BACKUP_DIR="/backup/"
DB_NAME="test"
DB_USER="root"
DB_PASSWORD="your password"
FTP_SERVER="ftp.tecadmin.net"
FTP_USERNAME="ftp user name"
FTP_PASSWORD="ftp user password"
FTP_UPLOAD_DIR="/backup/"
LOG_FILE=/backup/backup-DATE.log

############### Local Backup ########################

mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME | gzip > $LOCAL_BACKUP_DIR/$DB_NAME-$DATE.sql.gz

############### UPLOAD to FTP Server ################

ftp -n $FTP_SERVER << EndFTP
user "$FTP_USERNAME" "$FTP_PASSWORD"
binary
hash
cd $FTP_UPLOAD_DIR
#pwd
lcd $LOCAL_BACKUP_DIR
put "$DB_NAME-$DATE.sql.gz"
bye
EndFTP

if test $? = 0
then
echo "Database Successfully Uploaded to Ftp Server
File Name $DB_NAME-$DATE.sql.gz " > $LOG_FILE
else
echo "Error in database Upload to Ftp Server" > $LOG_FILE
fi

Skrip tersebut juga bukan buatan saya. Skrip tersebut dibuat oleh situs Tecadmin, jadi Anda bisa mereferensikan ke website tersebut

Konfigurasi Database Script

Anda hanya perlu mengkonfigurasikan variabel ini saja, yang lain tidak usah diedit lagi.

LOCAL_BACKUP_DIR="/backup/" > ini adalah direktori dimana sql backupnya diletakkan
DB_NAME="test" > konfigurasikan nama database yang ingin dibackup
DB_USER="root" > konfigurasikan user database yang ingin dibackup
DB_PASSWORD="your password" > konfigurasikan password database yang ingin dibackup
FTP_SERVER="ftp.tecadmin.net" > masukkan ip FTP backup
FTP_USERNAME="ftp user name" > konfigurasikan username FTP backup
FTP_PASSWORD="ftp user password" > konfigurasikan passwordFTP backup
FTP_UPLOAD_DIR="/backup/" > ini adalah direktori FTP dimana sql backupnya diletakkan
LOG_FILE=/backup/backup-DATE.log > ini adalah direktori dimana log sql backupnya diletakkan

Perhatikan, file local directory backup dan log backup harus dibuat terlebih dahulu agar tidak menimbulkan error.

Setelah itu, simpan skrip backup database dengan cara yang sama saat Anda menyimpan skrip backup file dan folder.

Tambahan Lain

Apakah setiap kali backup harus menjalankan skrip tersebut ? Tidak. Anda bisa mengkonfigurasikannya lewat cronjob.

Bagi Anda yang belum familiar dengan cronjob, mohon maaf saya belum sempat menuliskannya diblog ini tetapi Anda bisa klik disini untuk membaca tutorial cronjob.

Skrip ini sebetulnya punya kelemahan, yaitu kita tidak bisa mengkonfigurasi retention backup. Retention backup maksudnya adalah setting dimana kita bisa menkonfigurasikan berapa banyak backup yang akan kita simpan di FTP backup. Apakah jumlah backupnya hanya 1, 2 dan seterusnya.

Dengan demikian, Anda harus menghapus manual backup yang sudah tidak digunakan di FTP Backup supaya tidak memakan storage yang terlalu banyak.

Bila rekan – rekan pembaca ingin memodifikasi dan menambahi skrip backup rentention, jangan lupa dishare kembali ya supaya tutorial ini dapat update.

sumber : https://tekno.gabrieldwi.id/cara-membackup-file-dan-database-di-linux-menggunakan-ftp/