{"id":1504,"date":"2021-09-09T14:23:43","date_gmt":"2021-09-09T06:23:43","guid":{"rendered":"https:\/\/zaf.web.id\/blog\/?p=1504"},"modified":"2026-11-14T22:01:26","modified_gmt":"2026-11-14T14:01:26","slug":"dump-dan-backup-mysql-ke-s3-digitalocean-spaces","status":"publish","type":"post","link":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/","title":{"rendered":"Dump dan Backup MySQL ke S3 DigitalOcean Spaces"},"content":{"rendered":"<p>Alur untuk backup otomatis database langsung ke S3 services, salah satunya ke DigitalOcean (DO) Spaces<\/p>\n<h3>Integrasi s3cmd<\/h3>\n<p>Download sesuai platform dari <a href=\"https:\/\/s3tools.org\/s3cmd\">https:\/\/s3tools.org\/s3cmd<\/a> kemudian jalankan comman untuk konfigurasi :<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Bash\"><code>s3cmd --configure<\/code><\/pre>\n<\/div>\n<p>Lengkapi credentials sehingga dapat terhubung dengan S3 service<\/p>\n<figure id=\"attachment_1754\" aria-describedby=\"caption-attachment-1754\" style=\"width: 687px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"wp-image-1754\" src=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/09\/Screenshot-from-2021-09-09-14-15-14.png?resize=687%2C278&#038;ssl=1\" alt=\"s3cmd lists\" width=\"687\" height=\"278\" srcset=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/09\/Screenshot-from-2021-09-09-14-15-14.png?w=769&amp;ssl=1 769w, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/09\/Screenshot-from-2021-09-09-14-15-14.png?resize=300%2C121&amp;ssl=1 300w, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/09\/Screenshot-from-2021-09-09-14-15-14.png?resize=619%2C250&amp;ssl=1 619w\" sizes=\"auto, (max-width: 687px) 100vw, 687px\" \/><figcaption id=\"caption-attachment-1754\" class=\"wp-caption-text\">s3cmd lists<\/figcaption><\/figure>\n<h3>Script untuk Dump and Push<\/h3>\n<p>Buat sebuah file dengan nama <code>do.sh<\/code> berisi perintah berikut (sesuaikan variabel)<\/p>\n<style>.gist table { margin-bottom: 0; }<\/style><div style=\"tab-size: 8\" id=\"gist112192846\" class=\"gist\">\n    <div class=\"gist-file\" translate=\"no\" data-color-mode=\"light\" data-light-theme=\"light\">\n      <div class=\"gist-data\">\n        \n<div class=\"js-gist-file-update-container js-task-list-container\">\n      <div id=\"file-do-sh\" class=\"file my-2\">\n    \n    <div itemprop=\"text\"\n      class=\"Box-body p-0 blob-wrapper data type-shell  \"\n      style=\"overflow: auto\" tabindex=\"0\" role=\"region\"\n      aria-label=\"do.sh content, created by 23Pstars on 08:22AM on October 05, 2021.\"\n    >\n\n        \n<div class=\"js-check-hidden-unicode js-blob-code-container blob-code-content\">\n\n  <template class=\"js-file-alert-template\">\n  <div data-view-component=\"true\" class=\"flash flash-warn flash-full d-flex flex-items-center\">\n  <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n    <span>\n      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.\n      <a class=\"Link--inTextBlock\" href=\"https:\/\/github.co\/hiddenchars\" target=\"_blank\">Learn more about bidirectional Unicode characters<\/a>\n    <\/span>\n\n\n  <div data-view-component=\"true\" class=\"flash-action\">        <a href=\"{{ revealButtonHref }}\" data-view-component=\"true\" class=\"btn-sm btn\">    Show hidden characters\n<\/a>\n<\/div>\n<\/div><\/template>\n<template class=\"js-line-alert-template\">\n  <span aria-label=\"This line has hidden Unicode characters\" data-view-component=\"true\" class=\"line-alert tooltipped tooltipped-e\">\n    <svg aria-hidden=\"true\" data-component=\"Octicon\" height=\"16\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" data-view-component=\"true\" class=\"octicon octicon-alert\">\n    <path d=\"M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z\"><\/path>\n<\/svg>\n<\/span><\/template>\n\n  <table data-hpc class=\"highlight tab-size js-file-line-container\" data-tab-size=\"4\" data-paste-markdown-skip data-tagsearch-path=\"do.sh\">\n        <tr>\n          <td id=\"file-do-sh-L1\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"1\"><\/td>\n          <td id=\"file-do-sh-LC1\" class=\"blob-code blob-code-inner js-file-line\">#!\/bin\/bash<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L2\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"2\"><\/td>\n          <td id=\"file-do-sh-LC2\" class=\"blob-code blob-code-inner js-file-line\">DB_HOST={{db_name}}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L3\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"3\"><\/td>\n          <td id=\"file-do-sh-LC3\" class=\"blob-code blob-code-inner js-file-line\">DB_NAME={{db_name}}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L4\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"4\"><\/td>\n          <td id=\"file-do-sh-LC4\" class=\"blob-code blob-code-inner js-file-line\">DB_USER={{db_user}}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L5\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"5\"><\/td>\n          <td id=\"file-do-sh-LC5\" class=\"blob-code blob-code-inner js-file-line\">DB_PASS={{db_pass}}<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L6\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"6\"><\/td>\n          <td id=\"file-do-sh-LC6\" class=\"blob-code blob-code-inner js-file-line\">S3_PATH=path\/to\/app\/<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L7\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"7\"><\/td>\n          <td id=\"file-do-sh-LC7\" class=\"blob-code blob-code-inner js-file-line\">FILE_NAME=mysql-$(date +%Y%m%d-%H_%M_%S)<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L8\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"8\"><\/td>\n          <td id=\"file-do-sh-LC8\" class=\"blob-code blob-code-inner js-file-line\">echo &quot;dump db...&quot;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L9\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"9\"><\/td>\n          <td id=\"file-do-sh-LC9\" class=\"blob-code blob-code-inner js-file-line\">mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME &gt; $FILE_NAME.sql<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L10\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"10\"><\/td>\n          <td id=\"file-do-sh-LC10\" class=\"blob-code blob-code-inner js-file-line\">echo &quot;compress...&quot;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L11\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"11\"><\/td>\n          <td id=\"file-do-sh-LC11\" class=\"blob-code blob-code-inner js-file-line\">tar -czvf $FILE_NAME.tar.gz $FILE_NAME.sql<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L12\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"12\"><\/td>\n          <td id=\"file-do-sh-LC12\" class=\"blob-code blob-code-inner js-file-line\">echo &quot;put to s3...&quot;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L13\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"13\"><\/td>\n          <td id=\"file-do-sh-LC13\" class=\"blob-code blob-code-inner js-file-line\">s3cmd put $FILE_NAME.tar.gz s3:\/\/$S3_PATH<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L14\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"14\"><\/td>\n          <td id=\"file-do-sh-LC14\" class=\"blob-code blob-code-inner js-file-line\">echo &quot;clean up...&quot;<\/td>\n        <\/tr>\n        <tr>\n          <td id=\"file-do-sh-L15\" class=\"blob-num js-line-number js-blob-rnum\" data-line-number=\"15\"><\/td>\n          <td id=\"file-do-sh-LC15\" class=\"blob-code blob-code-inner js-file-line\">rm -f $FILE_NAME*<\/td>\n        <\/tr>\n  <\/table>\n<\/div>\n\n\n    <\/div>\n\n  <\/div>\n\n<\/div>\n\n      <\/div>\n      <div class=\"gist-meta\">\n        <a href=\"https:\/\/gist.github.com\/23Pstars\/2059677471aca9ed76713bdf56d723eb\/raw\/1e8203ac18930da4b5813e2aa420a33ede71bf47\/do.sh\" style=\"float:right\" class=\"Link--inTextBlock\">view raw<\/a>\n        <a href=\"https:\/\/gist.github.com\/23Pstars\/2059677471aca9ed76713bdf56d723eb#file-do-sh\" class=\"Link--inTextBlock\">\n          do.sh\n        <\/a>\n        hosted with &#10084; by <a class=\"Link--inTextBlock\" href=\"https:\/\/github.com\">GitHub<\/a>\n      <\/div>\n    <\/div>\n<\/div>\n\n<h3>Atur Penjadwalan<\/h3>\n<p>Buka crontab mode edit dan tambahkan command berikut (waktu bisa disesuaikan) :<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism line-numbers lang-bash\" data-lang=\"Crontab\"><code>0 0 * * * \/bin\/sh ~\/do.sh<\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Alur untuk backup otomatis database langsung ke S3 services, salah satunya ke DigitalOcean (DO) Spaces&hellip;<\/p>\n","protected":false},"author":1,"featured_media":1754,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[57,58],"tags":[278,277],"class_list":["post-1504","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming","category-server","tag-mysqldump","tag-s3cmd"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Dump dan Backup MySQL ke S3 DigitalOcean Spaces - Ahmad Zafrullah<\/title>\n<meta name=\"description\" content=\"Alur untuk melakukan backup database dan push ke layanan S3 secara otomatis. Penjadwalan dilakukan menggunakan cron.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Dump dan Backup MySQL ke S3 DigitalOcean Spaces - Ahmad Zafrullah\" \/>\n<meta property=\"og:description\" content=\"Alur untuk melakukan backup database dan push ke layanan S3 secara otomatis. Penjadwalan dilakukan menggunakan cron.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/\" \/>\n<meta property=\"og:site_name\" content=\"Ahmad Zafrullah\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/www.facebook.com\/23Pstars\" \/>\n<meta property=\"article:author\" content=\"http:\/\/www.facebook.com\/23Pstars\" \/>\n<meta property=\"article:published_time\" content=\"2021-09-09T06:23:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-11-14T14:01:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/09\/Screenshot-from-2021-09-09-14-15-14.png?fit=769%2C311&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"769\" \/>\n\t<meta property=\"og:image:height\" content=\"311\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Zaf\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@23Pstars\" \/>\n<meta name=\"twitter:site\" content=\"@23Pstars\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Zaf\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/\"},\"author\":{\"name\":\"Zaf\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#\\\/schema\\\/person\\\/ba4e955d59a1e6a8284857e74b14e5ed\"},\"headline\":\"Dump dan Backup MySQL ke S3 DigitalOcean Spaces\",\"datePublished\":\"2021-09-09T06:23:43+00:00\",\"dateModified\":\"2026-11-14T14:01:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/\"},\"wordCount\":98,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#\\\/schema\\\/person\\\/ba4e955d59a1e6a8284857e74b14e5ed\"},\"image\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Screenshot-from-2021-09-09-14-15-14.png?fit=769%2C311&ssl=1\",\"keywords\":[\"mysqldump\",\"s3cmd\"],\"articleSection\":[\"Programming\",\"Server\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/\",\"url\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/\",\"name\":\"Dump dan Backup MySQL ke S3 DigitalOcean Spaces - Ahmad Zafrullah\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Screenshot-from-2021-09-09-14-15-14.png?fit=769%2C311&ssl=1\",\"datePublished\":\"2021-09-09T06:23:43+00:00\",\"dateModified\":\"2026-11-14T14:01:26+00:00\",\"description\":\"Alur untuk melakukan backup database dan push ke layanan S3 secara otomatis. Penjadwalan dilakukan menggunakan cron.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Screenshot-from-2021-09-09-14-15-14.png?fit=769%2C311&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2021\\\/09\\\/Screenshot-from-2021-09-09-14-15-14.png?fit=769%2C311&ssl=1\",\"width\":769,\"height\":311},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dump dan Backup MySQL ke S3 DigitalOcean Spaces\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/\",\"name\":\"Ahmad Zafrullah\",\"description\":\"Work to Learn is better than Learn how to Work\",\"publisher\":{\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#\\\/schema\\\/person\\\/ba4e955d59a1e6a8284857e74b14e5ed\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/#\\\/schema\\\/person\\\/ba4e955d59a1e6a8284857e74b14e5ed\",\"name\":\"Zaf\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1\",\"width\":300,\"height\":300,\"caption\":\"Zaf\"},\"logo\":{\"@id\":\"https:\\\/\\\/i0.wp.com\\\/zaf.web.id\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1\"},\"sameAs\":[\"http:\\\/\\\/zaf.web.id\",\"http:\\\/\\\/www.facebook.com\\\/23Pstars\",\"https:\\\/\\\/x.com\\\/23Pstars\"],\"url\":\"https:\\\/\\\/zaf.web.id\\\/blog\\\/author\\\/zaf\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Dump dan Backup MySQL ke S3 DigitalOcean Spaces - Ahmad Zafrullah","description":"Alur untuk melakukan backup database dan push ke layanan S3 secara otomatis. Penjadwalan dilakukan menggunakan cron.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/","og_locale":"id_ID","og_type":"article","og_title":"Dump dan Backup MySQL ke S3 DigitalOcean Spaces - Ahmad Zafrullah","og_description":"Alur untuk melakukan backup database dan push ke layanan S3 secara otomatis. Penjadwalan dilakukan menggunakan cron.","og_url":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/","og_site_name":"Ahmad Zafrullah","article_publisher":"http:\/\/www.facebook.com\/23Pstars","article_author":"http:\/\/www.facebook.com\/23Pstars","article_published_time":"2021-09-09T06:23:43+00:00","article_modified_time":"2026-11-14T14:01:26+00:00","og_image":[{"width":769,"height":311,"url":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/09\/Screenshot-from-2021-09-09-14-15-14.png?fit=769%2C311&ssl=1","type":"image\/png"}],"author":"Zaf","twitter_card":"summary_large_image","twitter_creator":"@23Pstars","twitter_site":"@23Pstars","twitter_misc":{"Ditulis oleh":"Zaf","Estimasi waktu membaca":"1 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/#article","isPartOf":{"@id":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/"},"author":{"name":"Zaf","@id":"https:\/\/zaf.web.id\/blog\/#\/schema\/person\/ba4e955d59a1e6a8284857e74b14e5ed"},"headline":"Dump dan Backup MySQL ke S3 DigitalOcean Spaces","datePublished":"2021-09-09T06:23:43+00:00","dateModified":"2026-11-14T14:01:26+00:00","mainEntityOfPage":{"@id":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/"},"wordCount":98,"commentCount":0,"publisher":{"@id":"https:\/\/zaf.web.id\/blog\/#\/schema\/person\/ba4e955d59a1e6a8284857e74b14e5ed"},"image":{"@id":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/09\/Screenshot-from-2021-09-09-14-15-14.png?fit=769%2C311&ssl=1","keywords":["mysqldump","s3cmd"],"articleSection":["Programming","Server"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/","url":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/","name":"Dump dan Backup MySQL ke S3 DigitalOcean Spaces - Ahmad Zafrullah","isPartOf":{"@id":"https:\/\/zaf.web.id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/#primaryimage"},"image":{"@id":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/09\/Screenshot-from-2021-09-09-14-15-14.png?fit=769%2C311&ssl=1","datePublished":"2021-09-09T06:23:43+00:00","dateModified":"2026-11-14T14:01:26+00:00","description":"Alur untuk melakukan backup database dan push ke layanan S3 secara otomatis. Penjadwalan dilakukan menggunakan cron.","breadcrumb":{"@id":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/#primaryimage","url":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/09\/Screenshot-from-2021-09-09-14-15-14.png?fit=769%2C311&ssl=1","contentUrl":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/09\/Screenshot-from-2021-09-09-14-15-14.png?fit=769%2C311&ssl=1","width":769,"height":311},{"@type":"BreadcrumbList","@id":"https:\/\/zaf.web.id\/blog\/dump-dan-backup-mysql-ke-s3-digitalocean-spaces\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zaf.web.id\/blog\/"},{"@type":"ListItem","position":2,"name":"Dump dan Backup MySQL ke S3 DigitalOcean Spaces"}]},{"@type":"WebSite","@id":"https:\/\/zaf.web.id\/blog\/#website","url":"https:\/\/zaf.web.id\/blog\/","name":"Ahmad Zafrullah","description":"Work to Learn is better than Learn how to Work","publisher":{"@id":"https:\/\/zaf.web.id\/blog\/#\/schema\/person\/ba4e955d59a1e6a8284857e74b14e5ed"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zaf.web.id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":["Person","Organization"],"@id":"https:\/\/zaf.web.id\/blog\/#\/schema\/person\/ba4e955d59a1e6a8284857e74b14e5ed","name":"Zaf","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1","url":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1","contentUrl":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1","width":300,"height":300,"caption":"Zaf"},"logo":{"@id":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/zaf_auto_x2.jpeg?fit=300%2C300&ssl=1"},"sameAs":["http:\/\/zaf.web.id","http:\/\/www.facebook.com\/23Pstars","https:\/\/x.com\/23Pstars"],"url":"https:\/\/zaf.web.id\/blog\/author\/zaf\/"}]}},"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":2204,"url":"https:\/\/zaf.web.id\/blog\/backup-anti-ransomware-immutable-mysql-s3\/","url_meta":{"origin":1504,"position":0},"title":"Backup Anti-Ransomware: Immutable Backup MySQL ke Object Storage","author":"Zaf","date":"Juni 6, 2026","format":false,"excerpt":"Tahun 2021 saya menulis cara dump dan backup MySQL ke DigitalOcean Spaces dengan s3cmd dan cron. Skrip itu masih berjalan, tetapi ada satu kelemahan besar: jika penyerang mendapatkan kredensial yang sama, backup juga bisa dihapus atau dienkripsi. Ransomware modern memang sengaja memburu backup terlebih dahulu. Prinsip 3-2-1 plus immutability Simpan\u2026","rel":"","context":"dalam &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/zaf.web.id\/blog\/category\/programming\/"},"img":{"alt_text":"Ilustrasi backup immutable yang aman dari ransomware","src":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2026\/06\/AaEkKQkelWj3Of3lyDl7Bg-AaEkKQkefBKW0BgQydV7Mg.jpg?fit=1200%2C674&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2026\/06\/AaEkKQkelWj3Of3lyDl7Bg-AaEkKQkefBKW0BgQydV7Mg.jpg?fit=1200%2C674&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2026\/06\/AaEkKQkelWj3Of3lyDl7Bg-AaEkKQkefBKW0BgQydV7Mg.jpg?fit=1200%2C674&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2026\/06\/AaEkKQkelWj3Of3lyDl7Bg-AaEkKQkefBKW0BgQydV7Mg.jpg?fit=1200%2C674&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2026\/06\/AaEkKQkelWj3Of3lyDl7Bg-AaEkKQkefBKW0BgQydV7Mg.jpg?fit=1200%2C674&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":1501,"url":"https:\/\/zaf.web.id\/blog\/upload-file-sederhana-ke-aws-s3-dengan-php\/","url_meta":{"origin":1504,"position":1},"title":"Upload File Sederhana ke AWS S3 dengan PHP","author":"Zaf","date":"Agustus 9, 2020","format":false,"excerpt":"AWS telah menyediakan SDK untuk memudahkan transaksi terhadap beberapa servicenya secara program, salah satu yang disediakan adalah untuk PHP. Namun terkadang kebutuhan tidak sesuai dengan usaha yang harus dikeluarkan. Untuk sekedar upload file ke S3 milik AWS kita perlu load\/download paket lengkap dari SDK nya, rasanya agak berlebihan. Setelah googling\u2026","rel":"","context":"dalam &quot;Programming&quot;","block_context":{"text":"Programming","link":"https:\/\/zaf.web.id\/blog\/category\/programming\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2020\/08\/Screenshot-2024-09-06-at-00.22.03.png?fit=1200%2C813&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2020\/08\/Screenshot-2024-09-06-at-00.22.03.png?fit=1200%2C813&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2020\/08\/Screenshot-2024-09-06-at-00.22.03.png?fit=1200%2C813&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2020\/08\/Screenshot-2024-09-06-at-00.22.03.png?fit=1200%2C813&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2020\/08\/Screenshot-2024-09-06-at-00.22.03.png?fit=1200%2C813&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":2101,"url":"https:\/\/zaf.web.id\/blog\/penting-hapus-file-sql-setelah-migrasi-web\/","url_meta":{"origin":1504,"position":2},"title":"Penting! Hapus File .sql dan .zip Setelah Migrasi Web","author":"Zaf","date":"September 10, 2024","format":false,"excerpt":"Beberapa orang sering tidak memperhatikan hal ini, setelah melakukan migrasi file .sql dan file .zip lupa untuk dihapus. Jika tidak dihapus, lebih-lebih file tersebut berada dibawah public_html maka semua orang dapat mengakses file tersebut melalui http:\/\/{host}\/user_xxx.sql dan http:\/\/{host}\/user_backup.zip. Untuk file .sql serangan ini sering disebut Database Dump Attack atau File\u2026","rel":"","context":"dalam &quot;Security&quot;","block_context":{"text":"Security","link":"https:\/\/zaf.web.id\/blog\/category\/security\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-17-10-08-32.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-17-10-08-32.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-17-10-08-32.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2024\/09\/Screenshot-from-2024-09-17-10-08-32.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1048,"url":"https:\/\/zaf.web.id\/blog\/ketika-ddos-menyerang\/","url_meta":{"origin":1504,"position":3},"title":"Ketika DDoS menyerang","author":"Zaf","date":"April 1, 2017","format":false,"excerpt":"Mengelola server merupakan pekerjaan yang tidak\u00a0selalu mudah. Sesuatu\u00a0yang sifatnya open public pastinya memiliki banyak ancaman yang tidak pernah dapat ditebak kapan datangnya. Berapa tahun terakhir saya bertugas untuk mengelola beberapa server\u00a0yang\u00a0menaungi cukup banyak website, mulai dari bisnis, personal, iseng, sampai yang tidak penting. DigitalOcean Sejauh ini layanan VPS (Virtual Private\u2026","rel":"","context":"dalam &quot;Server&quot;","block_context":{"text":"Server","link":"https:\/\/zaf.web.id\/blog\/category\/server\/"},"img":{"alt_text":"DDoS everywhere","src":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2017\/03\/ddos-ddos-everywhere.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2017\/03\/ddos-ddos-everywhere.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2017\/03\/ddos-ddos-everywhere.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":586,"url":"https:\/\/zaf.web.id\/blog\/masalah-mysql-service-sering-mati-pada-cloud-digitalocean\/","url_meta":{"origin":1504,"position":4},"title":"Masalah MySQL service sering mati pada Cloud DigitalOcean","author":"Zaf","date":"September 22, 2015","format":false,"excerpt":"Beberapa bulan terakhir saya memutuskan untuk menggunakan layanan cloud server dari DigitalOcean untuk mengakomodir semua service, baik website maupun system management yang saya gunakan di kantor. Butuh beberapa hari untuk proses migrasi data dari layanan sebelumnya (shared hosting) dan berjalan cukup baik, sampai saat ini kami sudah menggunakan 3 server\u2026","rel":"","context":"dalam &quot;Server&quot;","block_context":{"text":"Server","link":"https:\/\/zaf.web.id\/blog\/category\/server\/"},"img":{"alt_text":"DigitalOcean Logo","src":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2015\/09\/digitalocean_logo-300x300.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2189,"url":"https:\/\/zaf.web.id\/blog\/migrasi-ke-docker\/","url_meta":{"origin":1504,"position":5},"title":"Migrasi ke Docker","author":"Zaf","date":"Oktober 14, 2026","format":false,"excerpt":"Hampir sepuluh tahun terakhir semua website yang saya kelola selalu berjalan di atas web panel. Dimulai dari Webuzo, lalu pindah ke CentOS Web Panel, sempat singgah di aaPanel, dan akhirnya sekarang semuanya saya pindahkan ke Docker. Tulisan ini merangkum alasan dan cara migrasinya. Manajemen pakai panel Panel sangat membantu di\u2026","rel":"","context":"dalam &quot;DevOps&quot;","block_context":{"text":"DevOps","link":"https:\/\/zaf.web.id\/blog\/category\/devops\/"},"img":{"alt_text":"Ilustrasi perjalanan dari web panel ke Docker container","src":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2026\/11\/migrasi-docker-dari-panel-ke-container.jpg?fit=1200%2C674&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2026\/11\/migrasi-docker-dari-panel-ke-container.jpg?fit=1200%2C674&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2026\/11\/migrasi-docker-dari-panel-ke-container.jpg?fit=1200%2C674&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2026\/11\/migrasi-docker-dari-panel-ke-container.jpg?fit=1200%2C674&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2026\/11\/migrasi-docker-dari-panel-ke-container.jpg?fit=1200%2C674&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4zLnS-og","jetpack_featured_media_url":"https:\/\/i0.wp.com\/zaf.web.id\/blog\/wp-content\/uploads\/2021\/09\/Screenshot-from-2021-09-09-14-15-14.png?fit=769%2C311&ssl=1","_links":{"self":[{"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/posts\/1504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/comments?post=1504"}],"version-history":[{"count":7,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/posts\/1504\/revisions"}],"predecessor-version":[{"id":2269,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/posts\/1504\/revisions\/2269"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/media\/1754"}],"wp:attachment":[{"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/media?parent=1504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/categories?post=1504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zaf.web.id\/blog\/wp-json\/wp\/v2\/tags?post=1504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}