{"id":8569,"date":"2019-11-26T04:55:50","date_gmt":"2019-11-25T18:55:50","guid":{"rendered":"https:\/\/nsrd.info\/blog\/?p=8569"},"modified":"2019-11-26T04:55:57","modified_gmt":"2019-11-25T18:55:57","slug":"basics-using-avamar-to-protect-s3-bucket-data","status":"publish","type":"post","link":"https:\/\/nsrd.info\/blog\/2019\/11\/26\/basics-using-avamar-to-protect-s3-bucket-data\/","title":{"rendered":"Basics \u2013\u00a0Using Avamar to Protect S3 Bucket Data"},"content":{"rendered":"\n<p>Technically you shouldn&#8217;t need to backup object stores such as Amazon S3. Object stores are designed with massive durability levels, and best practices for protection include:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Enable versioning<\/li><li>Use replication<\/li><li>Object write splitters (with subsequent versioning and replication as required, as well)<\/li><li>Use snapshots<\/li><\/ul>\n\n\n\n<p>(OK, as far as I&#8217;m aware, snapshotting an S3 bucket isn&#8217;t an option \u2013\u00a0though it is with Azure&#8217;s equivalent object storage.)<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"900\" height=\"506\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bigStock-Fantasy-Bucket.jpg\" alt=\"Fantasy scene involving bucket and clouds\" class=\"wp-image-8570\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bigStock-Fantasy-Bucket.jpg 900w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bigStock-Fantasy-Bucket-300x169.jpg 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bigStock-Fantasy-Bucket-768x432.jpg 768w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><figcaption>Yay! Buckets!<\/figcaption><\/figure>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Beware that, when fighting monsters, you yourself do not become a monster &#8230; fot when you gaze long into the abyss, the abyss gazes also into you.<\/p><cite>Friedrich Nietzsche<\/cite><\/blockquote>\n\n\n\n<p>So, how does one backup a bucket<span id='easy-footnote-1-8569' class='easy-footnote-margin-adjust'><\/span><span class='easy-footnote'><a href='https:\/\/nsrd.info\/blog\/2019\/11\/26\/basics-using-avamar-to-protect-s3-bucket-data\/#easy-footnote-bottom-1-8569' title='I must say, &amp;#8216;backup a bucket&amp;#8217; is an inconvenient phrase that&amp;#8217;s pretty much perfect for triggering my old speech impediment.'><sup>1<\/sup><\/a><\/span>of data using Avamar?<\/p>\n\n\n\n<p>Here&#8217;s a list of what you&#8217;ll need:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Avamar (preferably with a Data Domain system, unless the bucket is small)<\/li><li>A bucket<\/li><li>A Linux system running S3FS \u2013 <strong>s3fs-fuse<\/strong>.<\/li><\/ul>\n\n\n\n<p>For my setup, I used:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Avamar 19.1 server (AVE) connected to a DDVE running DDOS 6.2.0.30<\/li><li>Linux server running CentOS 7.7.1908, with <strong>s3fs-fuse-1.85.el7<\/strong>.<\/li><li>Curl\/libcurl <strong>7.29.0-54.el7<\/strong>.<\/li><li>Permissions enabled such that the Linux system can access the bucket.<\/li><li>Avamar client 18.1.100-33 installed on the Linux system.<\/li><\/ul>\n\n\n\n<p>The s3fs-fuse software is an open-source project designed around the idea of instantiating an object store as a mountable file-system. Once it&#8217;s visible as a file-system on a host, you&#8217;ve got additional options for dealing with the data it contains.<\/p>\n\n\n\n<p>I won&#8217;t document the s3fs-fuse configuration process \u2013\u00a0the project documentation is average, at best, but it can be muddled through.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1331\" height=\"795\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bucket-details.png\" alt=\"Starting with an empty bucket\" class=\"wp-image-8573\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bucket-details.png 1331w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bucket-details-300x179.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bucket-details-1024x612.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bucket-details-768x459.png 768w\" sizes=\"auto, (max-width: 1331px) 100vw, 1331px\" \/><figcaption>There&#8217;s a hole in my bucket (it&#8217;s empty)<\/figcaption><\/figure>\n\n\n\n<p>I started with an empty bucket and uploaded a couple of files to it to get started. (I&#8217;m using the free AWS experimentation account, so I&#8217;m not going to load up an example with hundreds of gigabytes.)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1112\" height=\"713\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bucket-upload.png\" alt=\"\" class=\"wp-image-8574\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bucket-upload.png 1112w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bucket-upload-300x192.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bucket-upload-1024x657.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bucket-upload-768x492.png 768w\" sizes=\"auto, (max-width: 1112px) 100vw, 1112px\" \/><figcaption>Uploading some files to the bucket<\/figcaption><\/figure>\n\n\n\n<p>When uploading to the bucket, I chose to store it in conventional S3, since there&#8217;s a small amount of S3 provided in the free experimentation accounts.<\/p>\n\n\n\n<p>To enable access to my bucket, I configured IP level access since I was accessing from a fixed IP address in my home lab. (In practice, you&#8217;d probably want to grant access into a VPC running within AWS as this would be faster than doing it over the Internet.) My bucket policy looked like the following:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">{\n     \"Version\": \"2012-10-17\",\n     \"Id\": \"S3PolicyId1\",\n     \"Statement\": [\n         {\n             \"Sid\": \"IPAllow\",\n             \"Effect\": \"Allow\",\n             \"Principal\": \"*<em>\",<\/em>\n             \"Action\": \"s3:\",\n             \"Resource\": [\n                 \"arn:aws:s3:::<em>bucketNameGoesHere<\/em>\",\n                 \"arn:aws:s3:::<em>bucketNameGoesHere<\/em>\/*\"\n             ],\n             \"Condition\": {\n                 \"IpAddress\": {\n                     \"aws:SourceIp\": \"<em>A.B.C.D<\/em>\/32\"\n                 }\n             }\n         }\n     ]\n }<\/pre>\n\n\n\n<p>(Bucket permissions will be set and maintained by your cloud team, so the example I&#8217;ve provided just shows the construct I used.)<\/p>\n\n\n\n<p>I also configured a user within my AWS account with permissions only for buckets, and then wrote the access key and secret key in the format <em>ACCESS:SECRET<\/em> to \/root\/.passwd-s3afs on my Linux server.<\/p>\n\n\n\n<p>I created a directory, \/s3 on the Linux server, and issued the following mount command:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\"># <strong>s3fs <em>bucketNameGoesHere<\/em> \/s3 -o retries=1 -o passwd_file=\/root\/.passwd-s3afs -o use_path_request_style -o dbglevel=info -f -o curldbg -o endpoint=<em>bucketNameGoesHere<\/em>.amazonaws.com -o url=https:\/\/s3-<em>regionNameGoesHere<\/em>.amazonaws.com<\/strong><\/pre>\n\n\n\n<p>The debug options were essential to tell me what I was doing wrong, though it seems the <em>output<\/em> of the debug commands leaves a lot to be desired \u2013&nbsp;as does the manpage for s3fs. That being said, after a few trials of formatting the options differently, I got a successful mount:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"809\" height=\"235\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/s3fs-mount-of-bucket.png\" alt=\"\" class=\"wp-image-8575\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/s3fs-mount-of-bucket.png 809w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/s3fs-mount-of-bucket-300x87.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/s3fs-mount-of-bucket-768x223.png 768w\" sizes=\"auto, (max-width: 809px) 100vw, 809px\" \/><figcaption>Accessing the bucket under s3fs-fuse<\/figcaption><\/figure>\n\n\n\n<p>Now, just to make things interesting, I added a subfolder:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"810\" height=\"183\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/adding-content-to-the-bucket.png\" alt=\"\" class=\"wp-image-8576\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/adding-content-to-the-bucket.png 810w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/adding-content-to-the-bucket-300x68.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/adding-content-to-the-bucket-768x174.png 768w\" sizes=\"auto, (max-width: 810px) 100vw, 810px\" \/><figcaption>Adding content to the bucket<\/figcaption><\/figure>\n\n\n\n<p>Right, so what about Avamar? I installed and registered the client software<span id='easy-footnote-2-8569' class='easy-footnote-margin-adjust'><\/span><span class='easy-footnote'><a href='https:\/\/nsrd.info\/blog\/2019\/11\/26\/basics-using-avamar-to-protect-s3-bucket-data\/#easy-footnote-bottom-2-8569' title='I&amp;#8217;m part-way through upgrading from Avamar 18.1 to Avamar 19.2. So my Avamar server was on the interim Avamar 19.1 version, but my client packages were still 18.1.'><sup>2<\/sup><\/a><\/span>, then configured a policy. There&#8217;s really not much to the policy at all \u2013&nbsp;here are the first few screens of it:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"731\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-01-1024x731.png\" alt=\"\" class=\"wp-image-8577\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-01-1024x731.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-01-300x214.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-01-768x548.png 768w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-01.png 1152w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Naming the policy<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"730\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-02-1024x730.png\" alt=\"\" class=\"wp-image-8578\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-02-1024x730.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-02-300x214.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-02-768x547.png 768w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-02.png 1152w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Selecting the Clients for the Policy<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"728\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-03-1024x728.png\" alt=\"\" class=\"wp-image-8579\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-03-1024x728.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-03-300x213.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-03-768x546.png 768w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-03.png 1154w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Adopting a Dataset\/Creating a New One<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"729\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-04-1024x729.png\" alt=\"\" class=\"wp-image-8580\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-04-1024x729.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-04-300x214.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-04-768x547.png 768w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/S3-Backup-Policy-04.png 1154w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Dataset Selection Details<\/figcaption><\/figure>\n\n\n\n<p>For my policy, I configured a dataset selection of just <strong>\/s3<\/strong>. (Here&#8217;s where you&#8217;d need to be cautious \u2013&nbsp;even with source-side deduplication, bucket backups will cost you in reads, so you have to factor that into your cost modelling and choose the appropriate frequency with which you wish to perform a backup.)<\/p>\n\n\n\n<p>Running the policy with the debugging options mentioned in the s3fs mount command earlier will trigger a <em>lot<\/em> of output. Ideally, once you&#8217;re satisfied things are working, adjust your s3fs mount command to do the appropriate logging and run in the background. (You may even want to enable local filesystem caching and to backup that cache, instead.)<\/p>\n\n\n\n<p>For my environment, the activity monitor shows the backup completing quite quickly:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1466\" height=\"336\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Backup-Complete.png\" alt=\"\" class=\"wp-image-8581\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Backup-Complete.png 1466w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Backup-Complete-300x69.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Backup-Complete-1024x235.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Backup-Complete-768x176.png 768w\" sizes=\"auto, (max-width: 1466px) 100vw, 1466px\" \/><figcaption>Backup Complete<\/figcaption><\/figure>\n\n\n\n<p>Now, what about data recovery? Let&#8217;s start with a recovery to an alternate location:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1469\" height=\"639\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Initiate-Avamar-Recovery.png\" alt=\"\" class=\"wp-image-8582\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Initiate-Avamar-Recovery.png 1469w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Initiate-Avamar-Recovery-300x130.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Initiate-Avamar-Recovery-1024x445.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Initiate-Avamar-Recovery-768x334.png 768w\" sizes=\"auto, (max-width: 1469px) 100vw, 1469px\" \/><figcaption>Initiating an Avamar Recovery<\/figcaption><\/figure>\n\n\n\n<p>Here&#8217;s the walk-through of the restore wizard:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1152\" height=\"820\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-1.png\" alt=\"\" class=\"wp-image-8583\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-1.png 1152w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-1-300x214.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-1-1024x729.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-1-768x547.png 768w\" sizes=\"auto, (max-width: 1152px) 100vw, 1152px\" \/><figcaption>Restore Wizard: Select Backup<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1154\" height=\"821\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-2.png\" alt=\"\" class=\"wp-image-8584\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-2.png 1154w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-2-300x213.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-2-1024x729.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-2-768x546.png 768w\" sizes=\"auto, (max-width: 1154px) 100vw, 1154px\" \/><figcaption>Restore Wizard: Select Destination Client<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1152\" height=\"821\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-3.png\" alt=\"\" class=\"wp-image-8585\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-3.png 1152w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-3-300x214.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-3-1024x730.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-3-768x547.png 768w\" sizes=\"auto, (max-width: 1152px) 100vw, 1152px\" \/><figcaption>Restore Wizard: Select Content<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1152\" height=\"820\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-4.png\" alt=\"\" class=\"wp-image-8586\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-4.png 1152w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-4-300x214.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-4-1024x729.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-4-768x547.png 768w\" sizes=\"auto, (max-width: 1152px) 100vw, 1152px\" \/><figcaption>Restore Wizard: Select Recovery Destination Folder<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1153\" height=\"821\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-5.png\" alt=\"\" class=\"wp-image-8587\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-5.png 1153w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-5-300x214.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-5-1024x729.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-5-768x547.png 768w\" sizes=\"auto, (max-width: 1153px) 100vw, 1153px\" \/><figcaption>Restore Wizard: More Options (none used for this recovery)<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"730\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-6-1024x730.png\" alt=\"\" class=\"wp-image-8588\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-6-1024x730.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-6-300x214.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-6-768x548.png 768w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-6.png 1151w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption>Restore Wizard: Summary Page<\/figcaption><\/figure>\n\n\n\n<p>After clicking &#8216;Finish&#8217;, the restore was initiated and it finished relatively quickly according to the &#8216;Activity&#8217; view:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1468\" height=\"377\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Complete.png\" alt=\"\" class=\"wp-image-8589\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Complete.png 1468w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Complete-300x77.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Complete-1024x263.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Complete-768x197.png 768w\" sizes=\"auto, (max-width: 1468px) 100vw, 1468px\" \/><figcaption>Restore Complete<\/figcaption><\/figure>\n\n\n\n<p>And here&#8217;s a look at the recovered content:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"812\" height=\"219\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovered-Content.png\" alt=\"\" class=\"wp-image-8590\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovered-Content.png 812w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovered-Content-300x81.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovered-Content-768x207.png 768w\" sizes=\"auto, (max-width: 812px) 100vw, 812px\" \/><figcaption>Verifying the recovered content<\/figcaption><\/figure>\n\n\n\n<p>But what about recovering back into the bucket?<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"809\" height=\"168\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Oops.png\" alt=\"\" class=\"wp-image-8592\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Oops.png 809w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Oops-300x62.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Oops-768x159.png 768w\" sizes=\"auto, (max-width: 809px) 100vw, 809px\" \/><figcaption>Oops! I better recover my bucket!<\/figcaption><\/figure>\n\n\n\n<p>I won&#8217;t run through the entire restore wizard again, but here are the two key screens where we select the content to recover and leave the destination as the original location:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1154\" height=\"700\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-Key-Screens.png\" alt=\"\" class=\"wp-image-8593\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-Key-Screens.png 1154w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-Key-Screens-300x182.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-Key-Screens-1024x621.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Wizard-Key-Screens-768x466.png 768w\" sizes=\"auto, (max-width: 1154px) 100vw, 1154px\" \/><figcaption>Restoring S3 Bucket Data Back to the Source<\/figcaption><\/figure>\n\n\n\n<p>The obligatory view of the completed restore via activity monitoring:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1468\" height=\"378\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Complete-Redux.png\" alt=\"\" class=\"wp-image-8594\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Complete-Redux.png 1468w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Complete-Redux-300x77.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Complete-Redux-1024x264.png 1024w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Recovery-Complete-Redux-768x198.png 768w\" sizes=\"auto, (max-width: 1468px) 100vw, 1468px\" \/><figcaption>Restore Completed<\/figcaption><\/figure>\n\n\n\n<p>And finally, verification that we did indeed recover the data:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"811\" height=\"297\" src=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Verifying-Recovered-Content-Redux.png\" alt=\"\" class=\"wp-image-8595\" srcset=\"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Verifying-Recovered-Content-Redux.png 811w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Verifying-Recovered-Content-Redux-300x110.png 300w, https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/Verifying-Recovered-Content-Redux-768x281.png 768w\" sizes=\"auto, (max-width: 811px) 100vw, 811px\" \/><figcaption>Verifying the Recovered Data<\/figcaption><\/figure>\n\n\n\n<p>So, there you have it! That&#8217;s how you can backup and recover data in an S3 bucket (or other object stores compatible with s3fs-fuse) with Avamar. I&#8217;ll wrap up by giving a few architectural recommendations:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Unless absolutely necessary, place the system that&#8217;ll mount the bucket for backup topologically near the object store \u2013&nbsp;I hosted my client within my lab rather than within AWS.<\/li><li>Deduplication is essential here \u2013&nbsp;you want to limit your egress costs, after all.<\/li><li>Be careful with bucket permissions, of course! Getting them wrong can leave you with a horrendous security issue!<\/li><li>Consider using versioning and other forms of native bucket protection and focus on this as a compliance level backup, executed with reduced frequency.<\/li><\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Technically you shouldn&#8217;t need to backup object stores such as Amazon S3. Object stores are designed with massive durability levels,&hellip;<\/p>\n","protected":false},"author":1,"featured_media":8570,"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":"","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}},"categories":[1154,1229],"tags":[1337,1541],"class_list":["post-8569","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-avamar-2","category-cloud","tag-object","tag-s3"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/nsrd.info\/blog\/wp-content\/uploads\/2019\/11\/bigStock-Fantasy-Bucket.jpg","jetpack_shortlink":"https:\/\/wp.me\/pKpIN-2ed","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/posts\/8569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/comments?post=8569"}],"version-history":[{"count":5,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/posts\/8569\/revisions"}],"predecessor-version":[{"id":8604,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/posts\/8569\/revisions\/8604"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/media\/8570"}],"wp:attachment":[{"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/media?parent=8569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/categories?post=8569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nsrd.info\/blog\/wp-json\/wp\/v2\/tags?post=8569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}