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/