{"id":1291,"date":"2020-07-18T16:11:47","date_gmt":"2020-07-18T09:11:47","guid":{"rendered":"http:\/\/materi.smkn43jkt.sch.id\/?p=1291"},"modified":"2021-12-22T22:47:37","modified_gmt":"2021-12-22T15:47:37","slug":"cara-membackup-file-dan-database-di-linux-menggunakan-ftp","status":"publish","type":"post","link":"http:\/\/materi.smkn43jkt.sch.id\/?p=1291","title":{"rendered":"Cara Membackup File dan Database di Linux Menggunakan FTP"},"content":{"rendered":"<p>Beberapa waktu lalu, server Vultr mengalami kegagalan sehingga data customer hilang. Dalam hal ini, sebenarnya provider tidak dapat dituntut bila di bagian pernyataan layanan (\u00a0<em>terms of service<\/em>) ada pernyataan bahwa \u201ckehilangan data bukan tanggung jawab kami [provider], sehingga backup harus dilakukan secara mandiri oleh pemilik website.\u201d<\/p>\n<p>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.<\/p>\n<p>Jadi, sedia payung sebelum hujan.<\/p>\n<p>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.<\/p>\n<p>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.<\/p>\n<p>Pada panduan kali ini, saya hanya menjelaskan singkat cara backup file dan database di GNU \/ Linux menggunakan metode FTP<\/p>\n<h3>Panduan Membackup File dan Folder<\/h3>\n<p>Konsep dalam melakukan backup sangatlah sederhana, kita hanya perlu melakukan kompres data dalam bentuk .tar.gz atau .zip\u00a0 kemudian kita upload ke FTP backup yang sudah kita beli. Untuk database, kita tinggal melakukan export database kemudian diupload ftp.<\/p>\n<p>Itu bisa dilakukan secara manual. Tetapi, kan akan sedikit menyusahkan bila kita harus mengulangi langkah \u2013 langkah yang sama secara berulang kali. Jadi, otomatis lebih bagus.<\/p>\n<p><strong>1. Backup File dan Folder<\/strong><\/p>\n<p>Seperti yang sudah saya sampaikan diatas, kita akan melakukan backup terlebih dahulu terhadap file dan folder website.<\/p>\n<p>Buat file sh nya dengan cara mengetikkan <code>nano file_backup.sh<\/code> Silahkan copy dan paste skrip dibawah :<\/p>\n<pre>#!\/bin\/sh\r\n\r\n# Linux FTP Backup Script\r\n# Version: 1.0\r\n# Script by: Pietro Marangon\r\n# Skype: pe46dro\r\n# Email: pietro.marangon@gmail.com\r\n\r\nclean_backup() {\r\n  rm -f .\/$FILE\r\n  echo 'Local Backup Removed'\r\n}\r\n\r\n########################\r\n# Edit Below This Line #\r\n########################\r\n\r\n# FTP Login Data\r\nUSERNAME=\"USERNAME HERE\"\r\nPASSWORD=\"PASSWORD HERE\"\r\nSERVER=\"IP HERE\"\r\nPORT=\"REMOTE SERVER PORT\"\r\n\r\n#Directory where thing to backup is located\r\nDIR=\"\/root\"\r\n\r\n#Remote directory where the backup will be placed\r\nREMOTEDIR=\".\/\"\r\n\r\n#Filename of backup file to be transfered DON'T WRITE EXTENSION (.tar\/.zip\/ecc...)\r\nFILE=\"BACKUP_NAME\"\r\n\r\n#Transfer type\r\n#1=FTP\r\n#2=SFTP\r\nTYPE=1 \r\n\r\n##############################\r\n# Don't Edit Below This Line #\r\n##############################\r\n\r\nd=$(date --iso)\r\n\r\nFILE=$FILE\"_\"$d\".tar.gz\"\r\ntar -czvf .\/$FILE $DIR\r\necho 'Tar Complete'\r\n\r\nif [ $TYPE -eq 1 ]\r\nthen\r\nftp -n -i $SERVER &lt;&lt;EOF\r\nuser $USERNAME $PASSWORD\r\nbinary\r\nput $FILE $REMOTEDIR\/$FILE\r\nquit\r\nEOF\r\nelif [ $TYPE -eq 2 ]\r\nthen\r\nrsync --rsh=\"sshpass -p $PASSWORD ssh -p $PORT -o StrictHostKeyChecking=no -l $USERNAME\" $FILE $SERVER:$REMOTEDIR\r\nelse\r\necho 'Please select a valid type'\r\nfi\r\n\r\necho 'Remote Backup Complete'\r\nclean_backup\r\n#END<\/pre>\n<p>Skrip tersebut saya ambil dari <a href=\"https:\/\/github.com\/tomloprod\/Bash-FTP-Backup-Script\">GitHub<\/a>. Jadi, bagi yang tidak ingin copy paste bisa menggunakan perintah <code>gitclone<\/code><\/p>\n<p><strong>Konfigurasi Backup File dan Folder<\/strong><\/p>\n<p>Variabel yang perlu disesuaikan adalah sebagai berikut :<\/p>\n<p><strong>1. Login Detail ke Server FTP Backup<\/strong><\/p>\n<pre>FTP Login Data\r\nUSERNAME=\"USERNAME HERE\"\r\nPASSWORD=\"PASSWORD HERE\"\r\nSERVER=\"IP HERE\"\r\nPORT=\"REMOTE SERVER PORT\"<\/pre>\n<p>Silahkan sesuaikan username, password, ip dan port di FTP backup yang sudah Anda beli<\/p>\n<p><strong>2. Direktori yang ingin dibackup<\/strong><\/p>\n<pre>#Directory where thing to backup is located \r\nDIR=\"\/home\/username\/website\/public_html\"<\/pre>\n<p>Silahkan isi dengan direktori mana yang ingin Anda backup<\/p>\n<p><strong>3. Direktori FTP Backup<\/strong><\/p>\n<pre>#Remote directory where the backup will be placed\r\nREMOTEDIR=\".\/\"<\/pre>\n<p>Silahkan diisi sesuai keinginan dimana kita ingin menyimpan folder backup tersebut di FTP server yang kita beli<\/p>\n<p><strong>4. Konfigurasi Nama Backup<\/strong><\/p>\n<pre>#Filename of backup file to be transfered DON'T WRITE EXTENSION (.tar\/.zip\/ecc...) \r\nFILE=\"BACKUP_NAME\"<\/pre>\n<p>Silahkan diisi nama dengan nama file backupnya. Ingat, ekstensi file seperti .tar .zip dan lain sebagainya tidak perlu dimasukkan. Jadi, masukkan nama saja<\/p>\n<p><strong>5. FTP Setting<\/strong><\/p>\n<pre>#Transfer type \r\n#1=FTP \r\n#2=SFTP \r\nTYPE=1<\/pre>\n<p>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 <code> TYPE = 1 <\/code>.<\/p>\n<p>Setelah konfigurasi selesai, silahkan tekan tombol <code> CTRL + X <\/code> kemudian tekan tombol <code> Y <\/code> untuk menyimpan skrip backup. Setelah itu, kita masukkan perintah <code> chmod+x [nama_skrip].sh <\/code><\/p>\n<p>Bila sudah, maka kita tinggal tes apakah konfigurasi skrip sudah benar atau belum. Caranya, kita eksekusi saja langsung dengan cara memasukkan perintah <code> sh [nama_skrip].sh<\/code><\/p>\n<p>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.<\/p>\n<h3>Panduan Membackup Database<\/h3>\n<p>Sama seperti cara diatas, sekarang kita buat file bashnya dengan cara mengetikkan <code> nano backup_database.sh<\/code>, kemudian masukkan skrip berikut :<\/p>\n<pre>#!\/bin\/bash\r\n\r\n######################################################\r\n# Script Written by : Rahul Kumar\r\n# Date: Feb 21, 2013\r\n######################################################\r\n\r\nDATE=`date +%d%b%y`\r\nLOCAL_BACKUP_DIR=\"\/backup\/\"\r\nDB_NAME=\"test\"\r\nDB_USER=\"root\"\r\nDB_PASSWORD=\"your password\"\r\nFTP_SERVER=\"ftp.tecadmin.net\"\r\nFTP_USERNAME=\"ftp user name\"\r\nFTP_PASSWORD=\"ftp user password\"\r\nFTP_UPLOAD_DIR=\"\/backup\/\"\r\nLOG_FILE=\/backup\/backup-DATE.log\r\n\r\n############### Local Backup ########################\r\n\r\nmysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME | gzip &gt; $LOCAL_BACKUP_DIR\/$DB_NAME-$DATE.sql.gz\r\n\r\n############### UPLOAD to FTP Server ################\r\n\r\nftp -n $FTP_SERVER &lt;&lt; EndFTP\r\nuser \"$FTP_USERNAME\" \"$FTP_PASSWORD\"\r\nbinary\r\nhash\r\ncd $FTP_UPLOAD_DIR\r\n#pwd\r\nlcd $LOCAL_BACKUP_DIR\r\nput \"$DB_NAME-$DATE.sql.gz\"\r\nbye\r\nEndFTP\r\n\r\nif test $? = 0\r\nthen\r\necho \"Database Successfully Uploaded to Ftp Server\r\nFile Name $DB_NAME-$DATE.sql.gz \" &gt; $LOG_FILE\r\nelse\r\necho \"Error in database Upload to Ftp Server\" &gt; $LOG_FILE\r\nfi<\/pre>\n<p>Skrip tersebut juga bukan buatan saya. Skrip tersebut dibuat oleh situs <a href=\"https:\/\/tecadmin.net\/mysql-database-backup-to-ftp-server-shell-script\/\">Tecadmin<\/a>, jadi Anda bisa mereferensikan ke website tersebut<\/p>\n<p><strong>Konfigurasi Database Script<\/strong><\/p>\n<p>Anda hanya perlu mengkonfigurasikan variabel ini saja, yang lain tidak usah diedit lagi.<\/p>\n<pre>LOCAL_BACKUP_DIR=\"\/backup\/\" &gt; ini adalah direktori dimana sql backupnya diletakkan\r\nDB_NAME=\"test\" &gt; konfigurasikan nama database yang ingin dibackup\r\nDB_USER=\"root\" &gt; konfigurasikan user database yang ingin dibackup\r\nDB_PASSWORD=\"your password\" &gt; konfigurasikan password database yang ingin dibackup\r\nFTP_SERVER=\"ftp.tecadmin.net\" &gt; masukkan ip FTP backup\r\nFTP_USERNAME=\"ftp user name\" &gt; konfigurasikan username FTP backup\r\nFTP_PASSWORD=\"ftp user password\" &gt; konfigurasikan passwordFTP backup\r\nFTP_UPLOAD_DIR=\"\/backup\/\" &gt; ini adalah direktori FTP dimana sql backupnya diletakkan\r\nLOG_FILE=\/backup\/backup-DATE.log &gt; ini adalah direktori dimana log sql backupnya diletakkan<\/pre>\n<p>Perhatikan, file local directory backup dan log backup harus dibuat terlebih dahulu agar tidak menimbulkan error.<\/p>\n<p>Setelah itu, simpan skrip backup database dengan cara yang sama saat Anda menyimpan skrip backup file dan folder.<\/p>\n<h3>Tambahan Lain<\/h3>\n<p>Apakah setiap kali backup harus menjalankan skrip tersebut ? Tidak. Anda bisa mengkonfigurasikannya lewat cronjob.<\/p>\n<p>Bagi Anda yang belum familiar dengan cronjob, mohon maaf saya belum sempat menuliskannya diblog ini tetapi Anda bisa klik <a href=\"https:\/\/www.cyberciti.biz\/faq\/how-do-i-add-jobs-to-cron-under-linux-or-unix-oses\/\">disini<\/a> untuk membaca tutorial cronjob.<\/p>\n<p>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.<\/p>\n<p>Dengan demikian, Anda harus menghapus manual backup yang sudah tidak digunakan di FTP Backup supaya tidak memakan storage yang terlalu banyak.<\/p>\n<p>Bila rekan \u2013 rekan pembaca ingin memodifikasi dan menambahi skrip backup rentention, jangan lupa dishare kembali ya supaya tutorial ini dapat update.<\/p>\n<p>sumber : https:\/\/tekno.gabrieldwi.id\/cara-membackup-file-dan-database-di-linux-menggunakan-ftp\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Beberapa waktu lalu, server Vultr mengalami kegagalan sehingga data customer hilang. Dalam hal ini, sebenarnya provider tidak dapat dituntut bila di bagian pernyataan layanan (\u00a0terms of service) ada pernyataan bahwa \u201ckehilangan data bukan tanggung jawab kami [provider], sehingga backup harus dilakukan secara mandiri oleh pemilik website.\u201d Bila server mengalami kegagalan, dan kita tidak punya backup [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,7],"tags":[],"_links":{"self":[{"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/posts\/1291"}],"collection":[{"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1291"}],"version-history":[{"count":2,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/posts\/1291\/revisions"}],"predecessor-version":[{"id":5280,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=\/wp\/v2\/posts\/1291\/revisions\/5280"}],"wp:attachment":[{"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1291"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/materi.smkn43jkt.sch.id\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}