{"id":89956,"date":"2019-05-09T07:00:25","date_gmt":"2019-05-09T14:00:25","guid":{"rendered":"https:\/\/www.backblaze.com\/blog\/?p=89956"},"modified":"2022-04-04T12:22:07","modified_gmt":"2022-04-04T19:22:07","slug":"migrating-23tb-from-amazon-s3-to-backblaze-b2-in-just-seven-hours","status":"publish","type":"post","link":"https:\/\/www.backblaze.com\/blog\/migrating-23tb-from-amazon-s3-to-backblaze-b2-in-just-seven-hours\/","title":{"rendered":"Migrating 23TB from Amazon S3 to Backblaze&nbsp;B2 in Just Seven Hours"},"content":{"rendered":"<p><a href=\"\/blog\/wp-content\/uploads\/2019\/05\/nodecraft_header.jpg\" data-rel=\"lightbox-gallery-QIFifcbJ\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-89968 size-full\" title=\"\" src=\"https:\/\/www.backblaze.com\/blog\/wp-content\/uploads\/2019\/05\/nodecraft_header.jpg\" alt=\"flowchart of data transfer - Cloudflare - Bandwidth Alliance FTW! - Backblaze B2 Cloud Storage - Free Bandwidth - Nodecraft\" width=\"1440\" height=\"820\" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header.jpg 1440w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header-300x171.jpg 300w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header-1024x583.jpg 1024w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header-768x437.jpg 768w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header-560x319.jpg 560w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header-220x125.jpg 220w\" sizes=\"auto, (max-width: 1440px) 100vw, 1440px\" \/><\/a><\/p>\n<div class=\"abstract\" style=\"padding-top: 24px; line-height: 1.6;\">\n<p><em>Like many Backblaze customers, Nodecraft realized they could save a fortune by shifting their cloud storage to Backblaze and invest it elsewhere in growing their business. In this post that <a href=\"https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours\" target=\"_blank\" rel=\"noopener noreferrer\">originally appeared on Nodecraft&#8217;s blog<\/a>, Gregory R. Sudderth, Nodecraft&#8217;s Senior DevOps Engineer, shares the steps they took to first analyze, test, and then move that storage.<\/em><br \/>\n<span style=\"display: block; text-align: right; margin-right: 7%;\">&#8212; Skip Levens<\/span><\/p>\n<\/div>\n<p><!--HubSpot Call-to-Action Code --><span class=\"hs-cta-wrapper\" id=\"hs-cta-wrapper-4fdbba66-22c2-4db3-92f4-3733651371f5\"><span class=\"hs-cta-node hs-cta-4fdbba66-22c2-4db3-92f4-3733651371f5\" id=\"hs-cta-4fdbba66-22c2-4db3-92f4-3733651371f5\"><!--[if lte IE 8]>\n\n<div id=\"hs-cta-ie-element\"><\/div>\n\n<![endif]--><a href=\"https:\/\/cta-redirect.hubspot.com\/cta\/redirect\/2832298\/4fdbba66-22c2-4db3-92f4-3733651371f5\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"hs-cta-img\" id=\"hs-cta-img-4fdbba66-22c2-4db3-92f4-3733651371f5\" style=\"border-width:0px;\" src=\"https:\/\/no-cache.hubspot.com\/cta\/default\/2832298\/4fdbba66-22c2-4db3-92f4-3733651371f5.png\"  alt=\"\u2794 Download Our Media Workflows E-book\"\/><\/a><\/span><script charset=\"utf-8\" src=\"https:\/\/js.hscta.net\/cta\/current.js\"><\/script><script type=\"text\/javascript\"> hbspt.cta.load(2832298, '4fdbba66-22c2-4db3-92f4-3733651371f5', {\"useNewLoader\":\"true\",\"region\":\"na1\"}); <\/script><\/span><!-- end HubSpot Call-to-Action Code --><\/p>\n<h2>Overview<\/h2>\n<blockquote><p><em>TL;DR: Nodecraft moved 23TB of customer backup files from <a href=\"https:\/\/aws.amazon.com\/s3\/\" target=\"_blank\" rel=\"noopener noreferrer\">AWS S3<\/a> to <a href=\"https:\/\/www.backblaze.com\/cloud-storage\" target=\"_blank\" rel=\"noopener noreferrer\">Backblaze B2<\/a> in just 7 hours.<\/em><\/p><\/blockquote>\n<p id=\"bzdropcap\">Nodecraft.com is a multiplayer cloud platform, where gamers can rent and use our servers to build and share unique online multiplayer servers with their friends and\/or the public. In the course of server owners running their game servers, there are backups generated including the servers\u2019 files, game backups and other files. It goes without saying that backup reliability is important for server owners.<\/p>\n<p>In November 2018, it became clear to us at Nodecraft that we could improve our costs if we re-examine our cloud backup strategy. After looking at the current offerings, we decided we were moving our backups from Amazon\u2019s S3 to <a href=\"https:\/\/www.backblaze.com\/cloud-storage\" target=\"_blank\" rel=\"noopener noreferrer\">Backblaze\u2019s B2<\/a> service. This article describes how our team approached it, why, and what happened, specifically so we could share our experiences.<\/p>\n<h3>Benefits<\/h3>\n<p>Due to S3 and B2 being at least nearly equally* accessible, reliable, available, as well as many other providers, our primary reason for moving our backups now became pricing. As we started into the effort, other factors such as variety of API, quality of API, real-life workability, and customer service started to surface.<\/p>\n<p>After looking at a wide variety of considerations, we decided on Backblaze&#8217;s B2 service. A big part of the costs of this operation is their bandwidth, which is amazingly affordable.<\/p>\n<p>The price gap between the two object storage systems come from the <a href=\"https:\/\/www.cloudflare.com\/bandwidth-alliance\/\" target=\"_blank\" rel=\"noopener noreferrer\">Bandwidth Alliance<\/a> between Backblaze and Cloudflare, a group of providers that have agreed to not charge (or heavily discount) for data leaving inside the alliance of networks (\u201cegress\u201d charges). We at Nodecraft use Cloudflare extensively and so this left only the egress charges from Amazon to Cloudflare to worry about.<\/p>\n<p>In normal operations, our customers both constantly make backups as well as access them for various purposes and there has been no change to their abilities to perform these operations compared to the previous provider.<\/p>\n<h3>Considerations<\/h3>\n<p>As with any change in providers, the change-over must be thought out with great attention to detail. When there were no quality issues previously and circumstances are such that a wide field of new providers can be considered, the final selection must be carefully evaluated. Our list of concerns included these:<\/p>\n<ul>\n<li>Safety: we needed to move our files and ensure they remain intact, in a redundant way<\/li>\n<li>Availability: the service must both be reliable but also widely available ** (which means we needed to \u201cpoint\u201d at the right file after its move, during the entire process of moving all the files: different companies have different strategies, one bucket, many buckets, regions, zones, etc)<\/li>\n<li>API: we are experienced, so we are not crazy about proprietary file transfer tools<\/li>\n<li>Speed: we needed to move the files in bulk and not brake on rate limitations, and\u2026<\/li>\n<\/ul>\n<blockquote><p>\u2026improper tuning could turn the operation into our own DDoS.<\/p><\/blockquote>\n<p>All these factors individually are good and important, but when crafted together, can be a significant service disruption. If things can move easily, quickly, and, reliably, improper tuning could turn the operation into our own DDoS. We took thorough steps to make sure this wouldn\u2019t happen, so an additional requirement was added:<\/p>\n<h4>Tuning: Don\u2019t down your own services, or harm your neighbors<\/h4>\n<p>What this means to the lay person is \u201cWe have a lot of devices in our network, we can do this in parallel. If we do it at full-speed, we can make our multiple service providers not like us too much\u2026 maybe we should make this go at less than full speed.\u201d<\/p>\n<h2>Important Parts<\/h2>\n<p>To embrace our own cloud processing capabilities, we knew we would have to take a two tier approach in both the Tactical (move a file) and Strategic (tell many nodes to move all the files) levels.<\/p>\n<h3>Strategic<\/h3>\n<p>Our goals here are simple: we want to move all the files, move them correctly, and only once, but also make sure operations can continue while the move happens. This is key because if we had used one computer to move the files, it would take months.<\/p>\n<p>The first step to making this work in parallel was to build a small web service to allow us to queue a single target file to be moved at a time to each worker node. This service provided a locking mechanism so that the same file wouldn\u2019t be moved twice, both concurrently or eventually. The timer for the lock to expire (with error message) was set to a couple hours. This service was intended to be accessed via simple tools such as curl.<\/p>\n<p>We deployed each worker node as a Docker container, spread across our Docker Swarm. Using the parameters in a docker stack file, we were able to define how many workers per node joined the task. This also ensured more expensive bandwidth regions like Asia Pacific didn&#8217;t join the worker pool.<\/p>\n<h3>Tactical<\/h3>\n<p>Nodecraft has multiple fleets of servers spanning multiple datacenters, and our plan was to use spare capacity on most of them to move the backup files. We have experienced a consistent pattern of access of our servers by our users in the various data centers across the world, and we knew there would be availability for our file moving purposes.<\/p>\n<p>Our goals in this part of the operation are also simple, but have more steps:<\/p>\n<ul>\n<li>Get the name\/ID\/URL of a file to move which\u2026\n<ul>\n<li>locks the file, and\u2026<\/li>\n<li>starts the fail timer<\/li>\n<\/ul>\n<\/li>\n<li>Get the file info, including size<\/li>\n<li>DOWNLOAD: Copy the file to the local node (without limiting the node\u2019s network availability)<\/li>\n<li>Verify the file (size, ZIP integrity, hash)<\/li>\n<li>UPLOAD: Copy the file to the new service (again without impacting the node)<\/li>\n<li>Report \u201cdone\u201d with new ID\/URL location information to the Strategic level, which\u2026\n<ul>\n<li>\u2026releases the lock in the web service, cancels the timer, and marks the file DONE<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<figure id=\"attachment_89957\" aria-describedby=\"caption-attachment-89957\" style=\"width: 1024px\" class=\"wp-caption aligncenter\"><a href=\"\/blog\/wp-content\/uploads\/2019\/05\/nodecraft1.jpg\" data-rel=\"lightbox-gallery-QIFifcbJ\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-89957 size-full\" title=\"\" src=\"https:\/\/www.backblaze.com\/blog\/wp-content\/uploads\/2019\/05\/nodecraft1.jpg\" alt=\"diagram of Nodecraft data migration from AWS S3 to Backblaze B2 Cloud Storage\" width=\"1024\" height=\"974\" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft1.jpg 1024w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft1-300x285.jpg 300w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft1-768x731.jpg 768w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft1-560x533.jpg 560w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption id=\"caption-attachment-89957\" class=\"wp-caption-text\">Diagram illustrating how the S3 to B2 move was coordinated<\/figcaption><\/figure>\n<h3>The Kill Switch<\/h3>\n<p>In the case of a potential run-away, where even the in-band Docker Swarm commands themselves, we decided to make sure we had a kill switch handy. In our case, it was our intrepid little web service&#8211;we made sure we could pause it. Looking back, it would be better if it used a consumable resource, such as a counter, or a value in a database cell. If we didn\u2019t refresh the counter, then it would stop all its own. More on \u201crunaways\u201d later.<\/p>\n<h3>Real Life Tuning<\/h3>\n<p>Our business has daily, weekly, and other cycles of activity that are predictable. Most important is our daily cycle, that trails after the Sun. We decided to use our nodes that were in low-activity areas to carry the work, and after testing, we found that if we tune correctly this doesn\u2019t affect the relatively light loads of the servers in that low-activity region. This was backed up by verifying no change in customer service load using our metrics and those of our CRM tools. Back to tuning.<\/p>\n<p>Initially we tuned the DOWN file transfer speed equivalent to 3\/4ths of what wget(1) could do. We thought \u201coh, the network traffic to the node will fit in-between this so it\u2019s ok\u201d. This is mostly true, but only mostly. This is a problem in two ways. The cause of the problems is that isolated node tests are just that\u2014isolated. When a large number of nodes in a datacenter are doing the actual production file transfers, there is a proportional impact that builds as the traffic is concentrated towards the egress point(s).<\/p>\n<p>Problem 1: you are being a bad neighbor on the way to the egress points. Ok, you say \u201cwell we pay for network access, let\u2019s use it\u201d but of course there\u2019s only so much to go around, but also obviously \u201call the ports of the switch have more bandwidth than the uplink ports\u201d so of course there will be limits to be hit.<\/p>\n<p>Problem 2: you are being your own bad neighbor to yourself. Again, if you end-up with your machines being network-near to each other in a network-coordinates kind of way, your attempts to \u201cuse all that bandwidth we paid for\u201d will be throttled by the closest choke point, impacting only or nearly only yourself. If you\u2019re going to use most of the bandwidth you CAN use, you might as well be mindful of it and choose where you will put the chokepoint, that the entire operation will create. If one is not cognizant of this concern, one can take down entire racks of your own equipment by choking the top-of-rack switch, or, other networking.<\/p>\n<p>By reducing our 3\/4ths-of-wget(1) tuning to 50% of what wget could do for a single file transfer, we saw our nodes still functioning properly. Your mileage will absolutely vary, and there\u2019s hidden concerns in the details of how your nodes might or might not be near each other, and their impact on hardware in between them and the Internet.<\/p>\n<h3>Old Habits<\/h3>\n<p>Perhaps this is an annoying detail: Based on previous experience in life, I put in some delays. We scripted these tools up in Python, with a Bourne shell wrapper to detect fails (there were) and also because for our upload step, we ended up going against our DNA and used the Backblaze upload utility. By the way, it is multi-threaded and really fast. But in the wrapping shell script, as a matter of course, in the main loop, that was first talking to our API, I put in a sleep 2 statement. This creates a small pause \u201cat the top\u201d between files.<\/p>\n<p>This ended up being key, as we\u2019ll see in a moment.<\/p>\n<h3>How It (The Service, Almost) All Went Down<\/h3>\n<p>What\u2019s past is sometimes not prologue. Independent testing in a single node, or even a few nodes, was not totally instructive to what really was going to happen as we throttled up the test. Now when I say \u201ctest\u201d I really mean, \u201coperation\u201d.<\/p>\n<p>Our initial testing was concluded \u201cTactically\u201d as above, for which we used test files, and were very careful in the verification thereof. In general, we were sure that we could manage copying a file down (Python loop) and verifying (unzip -T) and operate the Backblaze b2 utility without getting into too much trouble\u2026but it\u2019s the Strategic level that taught us a few things.<\/p>\n<p>Remembering to a foggy past where \u201c6% collisions on a 10-BASE-T network and its game over\u201d\u2026yeah that 6%. We throttled up the number of replicas in the Docker Swarm, and didn\u2019t have any problems. Good. \u201cAlright.\u201d Then we moved the throttle so to speak, to the last detent.<\/p>\n<p>We had nearly achieved self-DDoS.<\/p>\n<p>It wasn\u2019t all that bad, but, we were suddenly very, very happy with our 50%-of-wget(1) tuning, and our 2 second delays between transfers, and most of all, our kill switch.<\/p>\n<h2>Analysis<\/h2>\n<blockquote><p><em>TL;DR &#8212; Things went great.<\/em><\/p><\/blockquote>\n<p>There were a couple files that just didn\u2019t want to transfer (weren\u2019t really there on S3, hmm). There were some DDoS alarms that tripped momentarily. There was a LOT of traffic\u2026and, then, the bandwidth bill.<\/p>\n<p>Your mileage may vary, but there\u2019s some things to think about with regards to your bandwidth bill. When I say \u201cbill\u201d it\u2019s actually a few bills.<\/p>\n<figure id=\"attachment_89958\" aria-describedby=\"caption-attachment-89958\" style=\"width: 911px\" class=\"wp-caption aligncenter\"><a href=\"\/blog\/wp-content\/uploads\/2019\/05\/nodecraft2.jpg\" data-rel=\"lightbox-gallery-QIFifcbJ\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-89958 size-full\" title=\"\" src=\"https:\/\/www.backblaze.com\/blog\/wp-content\/uploads\/2019\/05\/nodecraft2.jpg\" alt=\"diagram of bandwidth data flow savings switching away from AWS S3 to Backblaze B2 cloud storage\" width=\"911\" height=\"1024\" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft2.jpg 911w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft2-267x300.jpg 267w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft2-768x863.jpg 768w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft2-560x629.jpg 560w\" sizes=\"auto, (max-width: 911px) 100vw, 911px\" \/><\/a><figcaption id=\"caption-attachment-89958\" class=\"wp-caption-text\">Cloudflare Bandwidth Alliance cost savings<\/figcaption><\/figure>\n<p>As per the diagram above, moving the file can trigger multiple bandwidth charges, especially as our customers began to download the files from B2 for instance deployment, etc. In our case, we now only had the S3 egress bill to worry about. Here\u2019s why that works out:<\/p>\n<ul>\n<li>We have group (node) discount bandwidth agreements with our providers<\/li>\n<li>B2 is a member of the Bandwidth Alliance\u2026<\/li>\n<li>\u2026and so is Cloudflare<\/li>\n<li>We were accessing our S3 content through our (not free!) Cloudflare account public URLs, not by the (private) S3 URLs.<\/li>\n<\/ul>\n<p>Without saying anything about our confidential arrangements with our service partners, the following are both generally true: you can talk to providers and sometimes work out reductions. Also, they especially like it when you call them (in advance) and discuss your plans to run their gear hard. For example, on another data move, one of the providers gave us a way to \u201cmark\u201d our traffic a certain way, and it would go through a quiet-but-not-often-traveled part of their network; win win!<\/p>\n<h4>Want More?<\/h4>\n<ul>\n<li>Read the <a href=\"https:\/\/www.cloudflare.com\/case-studies\/nodecraft-bandwidth-alliance\/\" target=\"_blank\" rel=\"noopener noreferrer\">Nodecraft case study on the Cloudflare blog<\/a>.<\/li>\n<li>We also released our own <a href=\"https:\/\/github.com\/nodecraft\/b2-cloud-storage\" target=\"_blank\" rel=\"noopener noreferrer\">B2-Cloud-Storage<\/a> JavaScript NPM module which we now use in production to make this kind of upload process easier.<\/li>\n<\/ul>\n<p>Thanks for your attention, and good luck with your own byte slinging.<\/p>\n<p>by <strong>Gregory R. Sudderth<\/strong><br \/>\nNodecraft Senior DevOps Engineer<\/p>\n<p>* Science is hard, blue keys on calculators are tricky, and we don\u2019t have years to study things before doing them<\/p>\n<div style=\"padding: 15px auto; border: 6px solid #eee; border-radius: 12px; max-width: 88%; margin: 25px auto;\">\n<p style=\"font-size: 1.3em; color: purple; text-align: center; margin: 15px auto;\">Free Webinar<br \/>\nNodecraft&#8217;s Data Migration From S3 to B2<\/p>\n<p style=\"font-size: 1.0em; text-align: center; margin: 15px auto; padding-bottom: 25px;\">Wednesday, June 5, 2019 at 10am PT<br \/>\n<a href=\"https:\/\/www.brighttalk.com\/webcast\/16627\/358208?utm_source=webinar&amp;utm_medium=sales&amp;utm_campaign=cloud-jitsu-nodecraft-backblaze\" target=\"_blank\" rel=\"noopener noreferrer\">Cloud-Jitsu: Migrating 23TB from AWS S3 to Backblaze B2 in 7 hours<\/a><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Thanks to the cost savings possible with Backblaze B2 and the Bandwidth Alliance, Nodecraft was able to significantly reduce their cloud storage costs by moving from Amazon S3 to B2. Here&#8217;s how they did it in less than one day.<\/p>\n","protected":false},"author":135,"featured_media":89968,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[7,476],"tags":[468,400],"class_list":["post-89956","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-storage","category-media-workflow","tag-b2cloud","tag-me","entry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Migrating 23TB from Amazon S3 to Backblaze&nbsp;B2 in Just Seven Hours<\/title>\n<meta name=\"description\" content=\"In November 2018, it became clear to us at Nodecraft that we could improve our costs if we re-examine our cloud backup strategy.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migrating 23TB from Amazon S3 to Backblaze&nbsp;B2 in Just Seven Hours\" \/>\n<meta property=\"og:description\" content=\"In November 2018, it became clear to us at Nodecraft that we could improve our costs if we re-examine our cloud backup strategy.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours\" \/>\n<meta property=\"og:site_name\" content=\"Backblaze Blog | Cloud Storage &amp; Cloud Backup\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/backblaze\" \/>\n<meta property=\"article:published_time\" content=\"2019-05-09T14:00:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-04T19:22:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"820\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Skip Levens\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ActiveSkip\" \/>\n<meta name=\"twitter:site\" content=\"@backblaze\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Skip Levens\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Migrating 23TB from Amazon S3 to Backblaze&nbsp;B2 in Just Seven Hours","description":"In November 2018, it became clear to us at Nodecraft that we could improve our costs if we re-examine our cloud backup strategy.","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:\/\/www.nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours","og_locale":"en_US","og_type":"article","og_title":"Migrating 23TB from Amazon S3 to Backblaze&nbsp;B2 in Just Seven Hours","og_description":"In November 2018, it became clear to us at Nodecraft that we could improve our costs if we re-examine our cloud backup strategy.","og_url":"https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours","og_site_name":"Backblaze Blog | Cloud Storage &amp; Cloud Backup","article_publisher":"https:\/\/www.facebook.com\/backblaze","article_published_time":"2019-05-09T14:00:25+00:00","article_modified_time":"2022-04-04T19:22:07+00:00","og_image":[{"width":1440,"height":820,"url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header.jpg","type":"image\/jpeg"}],"author":"Skip Levens","twitter_card":"summary_large_image","twitter_creator":"@ActiveSkip","twitter_site":"@backblaze","twitter_misc":{"Written by":"Skip Levens","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours#article","isPartOf":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/migrating-23tb-from-amazon-s3-to-backblaze-b2-in-just-seven-hours\/"},"author":{"name":"Skip Levens","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/person\/61099cf27432c4a0d70e71b65bbf81ac"},"headline":"Migrating 23TB from Amazon S3 to Backblaze&nbsp;B2 in Just Seven Hours","datePublished":"2019-05-09T14:00:25+00:00","dateModified":"2022-04-04T19:22:07+00:00","mainEntityOfPage":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/migrating-23tb-from-amazon-s3-to-backblaze-b2-in-just-seven-hours\/"},"wordCount":2254,"commentCount":0,"publisher":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization"},"image":{"@id":"https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours#primaryimage"},"thumbnailUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header.jpg","keywords":["B2Cloud","M&amp;E"],"articleSection":["Cloud Storage","Media Workflow"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours#respond"]}]},{"@type":"WebPage","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/migrating-23tb-from-amazon-s3-to-backblaze-b2-in-just-seven-hours\/","url":"https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours","name":"Migrating 23TB from Amazon S3 to Backblaze&nbsp;B2 in Just Seven Hours","isPartOf":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours#primaryimage"},"image":{"@id":"https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours#primaryimage"},"thumbnailUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header.jpg","datePublished":"2019-05-09T14:00:25+00:00","dateModified":"2022-04-04T19:22:07+00:00","description":"In November 2018, it became clear to us at Nodecraft that we could improve our costs if we re-examine our cloud backup strategy.","breadcrumb":{"@id":"https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours#primaryimage","url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header.jpg","contentUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header.jpg","width":1440,"height":820,"caption":"flowchart of data transfer - Cloudflare - Bandwidth Alliance FTW! - Backblaze B2 Cloud Storage - Free Bandwidth - Nodecraft"},{"@type":"BreadcrumbList","@id":"https:\/\/nodecraft.com\/blog\/development\/migrating-23tb-from-s3-to-b2-in-just-7-hours#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Migrating 23TB from Amazon S3 to Backblaze&nbsp;B2 in Just Seven Hours"}]},{"@type":"WebSite","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#website","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/","name":"Backblaze Cloud Solutions Blog","description":"Cloud Storage &amp; Cloud Backup","publisher":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization","name":"Backblaze","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/www.backblaze.com\/blog\/wp-content\/uploads\/2017\/12\/backblaze_icon_transparent.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.backblaze.com\/blog\/wp-content\/uploads\/2017\/12\/backblaze_icon_transparent.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Backblaze"},"image":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/backblaze","https:\/\/x.com\/backblaze","https:\/\/www.youtube.com\/user\/Backblaze","https:\/\/en.wikipedia.org\/wiki\/Backblaze"]},{"@type":"Person","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/person\/61099cf27432c4a0d70e71b65bbf81ac","name":"Skip Levens","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/7e13d3b2bb9bfa19a924abe25b9aecc27dcdd7713964efb12c95ea1ff63efd48?s=96&d=blank&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/7e13d3b2bb9bfa19a924abe25b9aecc27dcdd7713964efb12c95ea1ff63efd48?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/7e13d3b2bb9bfa19a924abe25b9aecc27dcdd7713964efb12c95ea1ff63efd48?s=96&d=blank&r=g","caption":"Skip Levens"},"description":"Skip drives Backblaze's outreach to Creative and Media and Entertainment customers - and has been a long-time champion of intelligent digital storytelling and television and film production workflows.","sameAs":["https:\/\/x.com\/ActiveSkip"],"url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/author\/skip\/"}]}},"jetpack_featured_media_url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2019\/05\/nodecraft_header.jpg","_links":{"self":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts\/89956","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/users\/135"}],"replies":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/comments?post=89956"}],"version-history":[{"count":0,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts\/89956\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/media\/89968"}],"wp:attachment":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/media?parent=89956"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/categories?post=89956"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/tags?post=89956"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}