{"id":2510,"date":"2017-09-11T13:34:49","date_gmt":"2017-09-11T12:34:49","guid":{"rendered":"https:\/\/davidkeen.com\/blog\/?p=2510"},"modified":"2025-10-22T17:20:00","modified_gmt":"2025-10-22T06:50:00","slug":"backup-your-server-to-backblaze-b2-with-duplicity","status":"publish","type":"post","link":"https:\/\/davidkeen.com\/blog\/2017\/09\/backup-your-server-to-backblaze-b2-with-duplicity\/","title":{"rendered":"Back up your server to Backblaze B2 with Duplicity"},"content":{"rendered":"\n<p><a href=\"https:\/\/aws.amazon.com\/s3\/\">Amazon S3<\/a> has been around for more than ten years now and I have been happily using it for offsite backups of my servers for a long time. <a href=\"https:\/\/www.backblaze.com\/\">Backblaze&#8217;s<\/a> cloud backup service has been around for about the same length of time and I have been happily using it for offsite backups of my laptop, also for a long time.<\/p>\n\n\n\n<p>In September 2015, Backblaze launched a new product, <a href=\"https:\/\/www.backblaze.com\/cloud-storage\">B2 Cloud Storage<\/a>, and while S3 standard pricing is pretty cheap (Glacier is even cheaper) B2 claims to be &#8220;the lowest cost high performance cloud storage in the world&#8221;. The first 10 GB of storage is free as is the first 1 GB of daily downloads. For my small server backup requirements this sounds perfect.<\/p>\n\n\n\n<p>My backup tool of choice is <a href=\"http:\/\/duplicity.nongnu.org\/\">duplicity<\/a>, a command line backup tool that supports encrypted archives and a whole load of different storage services, including S3 and B2. It was a simple matter to create a new bucket on B2 and update my backup script to send the data to Backblaze instead of Amazon.<\/p>\n\n\n\n<p>Here is a simple backup script that uses duplicity to keep one month&#8217;s worth of backups. In this example we dump a few MySQL databases but it could easily be expanded to back up any other data you wish.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>#!\/bin\/bash\n\n########################################################################\n# A b2 backup script\n# Uses duplicity (http:\/\/duplicity.nongnu.org\/)\n#\n# Run this daily and keep 1 month's worth of backups\n########################################################################\n\n# b2 variables\nB2_ACCOUNT_ID=account_id\nB2_APPLICATION_KEY=application_key\nBUCKET=my-bucket-name\n\n# GPG\nENCRYPT_KEY=gpg_key_id\nexport PASSPHRASE=key_passphrase\n\n# Database credentials\nDB_USER='root'\nDB_PASS='password'\n\n# Backup these databases\nDATABASES=(my_db_1 my_db_2 my_db_3) \n\n# Working directory\nWORKING_DIR=\/root\/bak\n\n########################################################################\n\n# Make the working directory\nmkdir $WORKING_DIR\n\n#\n# Dump the databases\n#\nfor database in ${DATABASES&#91;@&#93;}; do\n  mysqldump -u$DB_USER -p$DB_PASS $database > $WORKING_DIR\/$database.sql\ndone\n\n# Send them to b2\nduplicity --full-if-older-than 7D --encrypt-key=\"$ENCRYPT_KEY\" $WORKING_DIR b2:\/\/$B2_ACCOUNT_ID:$B2_APPLICATION_KEY@$BUCKET\n\n# Verify\nduplicity verify --encrypt-key=\"$ENCRYPT_KEY\" b2:\/\/$B2_ACCOUNT_ID:$B2_APPLICATION_KEY@$BUCKET $WORKING_DIR\n\n# Cleanup\nduplicity remove-older-than 30D --force --encrypt-key=$ENCRYPT_KEY b2:\/\/$B2_ACCOUNT_ID:$B2_APPLICATION_KEY@$BUCKET\n\n# Remove the working directory\nrm -rf $WORKING_DIR\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\">#!\/bin\/bash<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">########################################################################<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># A b2 backup script<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Uses duplicity (http:\/\/duplicity.nongnu.org\/)<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">#<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Run this daily and keep 1 month&#39;s worth of backups<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">########################################################################<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># b2 variables<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">B2_ACCOUNT_ID<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #A3BE8C\">account_id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">B2_APPLICATION_KEY<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #A3BE8C\">application_key<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">BUCKET<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #A3BE8C\">my-bucket-name<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># GPG<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">ENCRYPT_KEY<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #A3BE8C\">gpg_key_id<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">export<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PASSPHRASE<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #A3BE8C\">key_passphrase<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Database credentials<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">DB_USER<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">root<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">DB_PASS<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">password<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Backup these databases<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">DATABASES<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #A3BE8C\">my_db_1<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">my_db_2<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">my_db_3<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\"> <\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Working directory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">WORKING_DIR<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #A3BE8C\">\/root\/bak<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">########################################################################<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Make the working directory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">mkdir<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">$WORKING_DIR<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">#<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Dump the databases<\/span><\/span>\n<span class=\"line\"><span style=\"color: #616E88\">#<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">database<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">${<\/span><span style=\"color: #D8DEE9\">DATABASES<\/span><span style=\"color: #ECEFF4\">&#91;<\/span><span style=\"color: #D8DEE9FF\">@<\/span><span style=\"color: #ECEFF4\">&#93;<\/span><span style=\"color: #81A1C1\">};<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">do<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">  <\/span><span style=\"color: #88C0D0\">mysqldump<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-u<\/span><span style=\"color: #D8DEE9\">$DB_USER<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-p<\/span><span style=\"color: #D8DEE9\">$DB_PASS<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">$database<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&gt;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">$WORKING_DIR<\/span><span style=\"color: #A3BE8C\">\/<\/span><span style=\"color: #D8DEE9\">$database<\/span><span style=\"color: #A3BE8C\">.sql<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">done<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Send them to b2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">duplicity<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--full-if-older-than<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">7<\/span><span style=\"color: #A3BE8C\">D<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--encrypt-key=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9\">$ENCRYPT_KEY<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">$WORKING_DIR<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">b2:\/\/<\/span><span style=\"color: #D8DEE9\">$B2_ACCOUNT_ID<\/span><span style=\"color: #A3BE8C\">:<\/span><span style=\"color: #D8DEE9\">$B2_APPLICATION_KEY<\/span><span style=\"color: #A3BE8C\">@<\/span><span style=\"color: #D8DEE9\">$BUCKET<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Verify<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">duplicity<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">verify<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--encrypt-key=<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9\">$ENCRYPT_KEY<\/span><span style=\"color: #ECEFF4\">&quot;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">b2:\/\/<\/span><span style=\"color: #D8DEE9\">$B2_ACCOUNT_ID<\/span><span style=\"color: #A3BE8C\">:<\/span><span style=\"color: #D8DEE9\">$B2_APPLICATION_KEY<\/span><span style=\"color: #A3BE8C\">@<\/span><span style=\"color: #D8DEE9\">$BUCKET<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">$WORKING_DIR<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Cleanup<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">duplicity<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">remove-older-than<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">30<\/span><span style=\"color: #A3BE8C\">D<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--force<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">--encrypt-key=<\/span><span style=\"color: #D8DEE9\">$ENCRYPT_KEY<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">b2:\/\/<\/span><span style=\"color: #D8DEE9\">$B2_ACCOUNT_ID<\/span><span style=\"color: #A3BE8C\">:<\/span><span style=\"color: #D8DEE9\">$B2_APPLICATION_KEY<\/span><span style=\"color: #A3BE8C\">@<\/span><span style=\"color: #D8DEE9\">$BUCKET<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Remove the working directory<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">rm<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">-rf<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">$WORKING_DIR<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>Run this via a cron job, something like this:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly>0 4 * * * \/root\/b2_backup.sh >>\/var\/log\/duplicity\/backup.log<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #88C0D0\">0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">4<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">*<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #A3BE8C\">\/root\/b2_backup.sh<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&gt;&gt;<\/span><span style=\"color: #A3BE8C\">\/var\/log\/duplicity\/backup.log<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Amazon S3 has been around for more than ten years now and I have been happily using it for offsite backups of my servers for a long time. Backblaze&#8217;s cloud backup service has been around for about the same length of time and I have been happily using it for offsite backups of my laptop, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2517,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[22],"tags":[],"class_list":["post-2510","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ops"],"jetpack_featured_media_url":"https:\/\/i0.wp.com\/davidkeen.com\/blog\/wp-content\/uploads\/2017\/09\/belgium-antwerp-shipping-container-163726.jpeg?fit=1280%2C753&ssl=1","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/davidkeen.com\/blog\/wp-json\/wp\/v2\/posts\/2510","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/davidkeen.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/davidkeen.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/davidkeen.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/davidkeen.com\/blog\/wp-json\/wp\/v2\/comments?post=2510"}],"version-history":[{"count":12,"href":"https:\/\/davidkeen.com\/blog\/wp-json\/wp\/v2\/posts\/2510\/revisions"}],"predecessor-version":[{"id":2835,"href":"https:\/\/davidkeen.com\/blog\/wp-json\/wp\/v2\/posts\/2510\/revisions\/2835"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/davidkeen.com\/blog\/wp-json\/wp\/v2\/media\/2517"}],"wp:attachment":[{"href":"https:\/\/davidkeen.com\/blog\/wp-json\/wp\/v2\/media?parent=2510"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/davidkeen.com\/blog\/wp-json\/wp\/v2\/categories?post=2510"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/davidkeen.com\/blog\/wp-json\/wp\/v2\/tags?post=2510"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}