目次
ご挨拶
DENET ADVENT CALENDAR 2023 12月12日担当の大野です。
アドカレと言う言葉も今回初めて知った大野ですが、技術ブログは習慣化していきたいので、盛り上がっている今こそ、より一層張り切って参加していきます!
アドカレの企画概要はこちら → [アドカレ2023] DENET ADVENT CALENDAR 2023に雪が降る
魅力的なAWSの記事が目白押しですね。
毎日目が離せません!
はじめに
私の趣味は旅行で、旅先ではミラーレス一眼カメラで写真を撮影しています。
ここで大きな課題になるのが、容量が大きい写真データのバックアップです。
普段はSDカードのまま保管していますが、過去に紛失した苦い思い出もあり、万が一の紛失やデータ消失、読み込みエラー等に備えて日頃からバックアップを取っておきたいものです。
ここで今回は、Amazon S3のアーカイブ用ストレージ「Amazon S3 Glacier」が写真データのバックアップに活用できないか検証してみようと思います!
目的
今回の記事では、下記の通りバックアップ、及び復元できることを目的として検証します。
- SDカードの写真データのバックアップを行う。
- バックアップから復元する時は、元のデータを一括でダウンロードして復元できるようにする。
大容量ファイルの圧縮
SDカードのフォルダをそのままS3 Glacierにアップロードすると、復元時には数千個にもなるファイル1個1個選択して復元、ダウンロードする必要があり、かなりの手間が掛かります。
元のSDカードデータ(フォルダ)そのままで復元するには、1個の圧縮ファイルにまとめてから、S3 Glacierにアップロードする必要があります。
ZIP圧縮は大容量には不向き
最も馴染み深い圧縮形式は、「ZIP形式」だと思います。
実は、ZIP形式は「圧縮前の容量は最大4GB、圧縮後の容量は最大2GB」という容量制限があるため、一筋縄では行きません。
試しに下記のデータをLhaplusで圧縮してみます。
16GBのSDHCのデータなので、14.2GBあります。
ファイルもこの通りです。
ZIPファイルが生成されたので、一見は正常に圧縮できたように思えます。
しかし、解凍するとエラーになります。
圧縮前4GB、圧縮後2GBの容量制限を超えたZIPファイルは、ZIP形式で圧縮してもZIPファイルは生成されるので見掛け上は正常に圧縮できたように思えますが、中身(データ構造)が壊れてしまうので、正常に解凍できなくなります。
7-Zipで圧縮する
では、どうすれば圧縮できるのか。
7-Zip(7z)という形式を用います。
圧縮にはLhaplusは使えないので、7-Zipというアーカイバで圧縮します。
ここからダウンロードできます。
https://7-zip.opensource.jp/
Windowsの場合はダウンロードして、EXEファイル起動してインストールするだけで準備完了です。
7-Zipをインストールすると、右クリックに7-Zipの項目が追加されるので、ここから圧縮を行います。
Lhaplusと同じく、圧縮方法はシンプルですね。
7-Zipの圧縮中の画面。
プログレスバーがあるので分かりやすいです。
14.2GBで30~40分くらい掛かりました。
7-Zipで圧縮できました。
圧縮ファイルは「.7z」という拡張子になります。
では、解凍します。
7-Zipの解凍はLhaplusでも可能です。
正常に解凍できました。
※圧縮前のフォルダと同じ名前では上書きになるので、リネームしています。
フォルダにアクセス。
フォルダの中の写真ファイルも勿論無事です。
「7-zip形式」で圧縮できることが分かったので、本題に行ってみましょう。
Amazon S3 Glacierにバックアップ
Amazon S3 Glacierとは?
Amazon S3のデータアーカイブ専用のストレージクラスです。
アーカイブ専用なので、すぐにデータにはアクセスできず、ストレージクラスによっては取り出しに非常に長い時間を要する代わり、低価格で利用できるのが特徴です。
データの耐久性は、99.999999999% (11 ナイン)とされているため、正に大事なデータのアーカイブ、バックアップに使えるストレージと言えます。
S3バケットを作成する
まずは、データを入れる箱、S3バケットを作成します。
特にこだわりが無ければ、AWSリージョンとバケット名以外は、デフォルトの設定で問題無いでしょう。
S3バケットにアップロードする
次に、作成したバケットにファイルをアップロードします。
アップロードする時に、プロパティからストレージクラスを設定します。
Glacierに該当するストレージクラスは3種類あります。
180日を超える長期間の保存には「Glacier Deep Archive」がストレージ料金が最も安価ですが、今回は検証なので、3ヶ月後に取り出しの検証を行うことを考えて、ストレージクラスは「S3 Glacier Flexible Retrieval (旧 S3 Glacier)」に設定し、他の設定はそのままでアップロードします。
アップロードしたオブジェクトのステータス。
上の注意書きの通り、「S3 Glacier Flexible Retrieval (旧 S3 Glacier)」に保存されています。
Amazon S3 Glacierの料金
Amazon S3 Glacierの料金は、
- データの保存時に必要な料金
- PUTリクエスト料金
- 月額の利用料金
- ストレージ料金
- データ取り出し時に必要な料金
- データ取り出しリクエスト料金
- データ取り出し料金
の4つの料金が掛かります。
通常のS3にはデータ転送や様々なリクエスト(データへのアクセス)料金が掛かりますが、S3 Glacierは用途的に保存と取り出しが基本なので、それ以外のリクエストは今回は考えないことにします。
リクエスト料金と取り出し料金。
一番左が1000リクエスト当たりのPUT、COPY、POST、LISTリクエスト料金。
取り出し時には、右から2列目の取り出しリクエスト料金と、右端の1GB当たりの取り出し料金。
取り出しリクエスト料金と取り出し料金は、迅速リクエストであれば割高になりますが、今回の用途のように時間が掛かっても問題無いならば、標準リクエストでも十分と言えます。
#ストレージ料金 (月額)
14.1 (GB) * 0.0045 (USD) = 0.06345 (USD)
0.06345 (USD) * 144.86 (円) = 9.19 (円)
#取り出し料金 (標準取り出し)
0.03426 (USD) + 14.1(GB) * 0.011 (USD) = 0.18936 (USD)
0.18936 (USD) * 144.86 (円) = 27.43 (円)
※2023年12月8日のレート、1 (USD) = 144.86 (円)で計算。
今回保存した14.1GBで、東京リージョンで1ヶ月当たり9.19円、取り出し時に27.43円なので、円安の今でもかなり安く使えるアーカイブストレージだと思いますね。
おわりに
今回は、撮り溜めた写真ファイルをS3 Glacierにバックアップすることを行ってみました。
耐久性抜群で料金も安価なので、バックアップ、アーカイブ用途としては本当に向いているのかと思います。
S3 Glacierからの取り出しに関しては、その内、紹介できればと思います。
今回の検証で登場した写真は、学生の頃に訪れた小笠原諸島の写真です。
以下の写真は、父島からのアクティビティツアーでのみ上陸可能な無人島、南島をピックアップ。
東京から船で24時間掛かる小笠原諸島。
国内の中では時間も旅費も掛かる訪問難易度が高い場所ですが、本土と陸続きになったことがない、絶海の島々だからこそ育まれた、世界自然遺産に登録された素晴らしい自然や、独特の文化は魅力的です。
では…。
ディーネットでは少数派の旅行が大好きなアウトドア派エンジニア。