入手につきましては、準備中です。
開発の動機としまして:
- ノートパソコンのディスクイメージを複数持っていて、保管したい。安全に! 長期で!
- 30GB/日制限が有り、全速力でアップロードすると制限に触れて問題が発生します。
使い方
C:\GLACIER>Copy2Glacier.exe Copy2Glacier /ia1 <access key> Copy2Glacier /ia2 <secret key> Copy2Glacier /partsize <part size. default: 4194304> Copy2Glacier /region <region system name. default: us-east-1> Copy2Glacier /prep <up info file> <file> <vault name> Copy2Glacier /up <up info file> <max parts count to upload>
prepの使い方
元のファイルを読み取って、アップ情報ファイルを作成します。
C:\GLACIER>Copy2Glacier.exe /prep PC2 2010-04-09-13-img-pc2-recovery.7z 2010-04-09-13-img-pc2-recovery.7zハッシュ計算するので、少し時間が掛かります。
作成したアップ情報ファイルは、大体次のようなります。ANSIエンコード(CR LF)で保存します。日本語WindowsであればCP932。*n?xであれば、EUC/UTF8等、環境による。最初はUnicodeと書いていたのですが、途中で書き直してややこしい事に。(^^;
#!Copy2Glacier C:\GLACIER\2010-04-09-13-img-pc2-recovery.7z :archivesize 9033470095 :partsize 4194304 :vaultname 2010-04-09-13-img-pc2-recovery.7z + 0 4194304 8e08b908dbe67e8c20a8859407d656df7b73d3989217c8943c0c654c618cfabe + 4194304 4194304 d4f270466bc4c79dd4393d12aa06aea4a087d2ea9aad2ca099c3ac85c67bd9d9 + 8388608 4194304 0c36970933853ce5844cf94c2dd7d5cbc2c7c40c6180f6ac7637cb0aef915874 ... + 9026142208 4194304 52dc52bf516d11fd649e6d334eb1cd9cfc884cedf207ead58e6b77f9fd3d0887 + 9030336512 3133583 d2aedbaf9a03f34227384aa18c4a072b2d975a19ac3856da938e411aaaf88a5a $ 8a0e3deb40a6caa8da0755c5c945ce9e4e3af57c27fd65e236c11c7f4f4251761行目は、ファイル形式用のマジック
2行目は、元のファイルのフルパス。
3行目(:archivesize)は、ファイルのバイト数(Int64)
4行目(:partsize)は、断片の大きさ・バイト数
5行目(:vaultname)は、保管庫の名前
コロンで始まる行は、KeyとValueをペアにした設定値です。
プラスで始まる行は、UploadMultipartPartRequestに使用する情報です。(断片の開始オフセット バイト数 ハッシュ値)で構成されます。
ダラーで始まる行は、ツリーハッシュを示します。
いずれもAmazon Glacierにアップロードする際に必要となる情報です。
up
次に、アップロードのコマンドです。4MBの断片を10個上げる指示をしています。これをジョブ化しておけば、ゆっくりアップロードを実現できます:
C:\GLACIER>Copy2Glacier.exe /up PC2 10アップロードが進みますと、アップ情報ファイルに追記していきます。
:location /XXXXXXXXXXXX/vaults/2010-04-09-13-img-pc2-recovery.7z :uplocation /XXXXXXXXXXXX/vaults/2010-04-09-13-img-pc2-recovery.7z/multipart-uploads/XXXX-XXXXXXXXXXXXXXXGFF8yd18rTKveS8BbF5IH8MbBKm8Ff-XXXXXXXXXX_XXXXXXXXXXXXXXXXXXXXXX3l0J7T2s :uploadid XXXX-XXXXXXXXXXXXXXXXXX8yd18rTKveS8BbF5IH8MbBKm8Ff-XXXXXXXXXt_eXXXXXXXXXXXXXXXXBA3XXXXXX7T2s - 0 4194304 8e08b908dbe67e8c20a8859407d656df7b73d3989217c8943c0c654c618cfabe - 4194304 4194304 d4f270466bc4c79dd4393d12aa06aea4a087d2ea9aad2ca099c3ac85c67bd9d9 - 8388608 4194304 0c36970933853ce5844cf94c2dd7d5cbc2c7c40c6180f6ac7637cb0aef915874 - 12582912 4194304 87a129960848bc6e279721d191484d13127466e7a05faab3d347ff80198b83ee - 16777216 4194304 34bf57c6b63e49ec30aec18b02d03326250fbaf5b5abf74a460816c9ef4362ca身の安全が為、一部を伏字にしています。
:locationは、CreateVaultRequestの結果、返ってきますLocationの内容を格納します。
:uplocationは、InitiateMultipartUploadの結果、返ってきますLocationを格納、
:uploadidは、同UploadIdを格納します。
3つのうち、必要なのはuploadidだけで、他は無くてもアップロードを完遂できます。
ハイフンで始まる行は、UploadMultipartPartが済んでいますよ、という情報です。プラスの時と同じく(断片の開始オフセット バイト数 ハッシュ値)で構成されます。
こうしておけば、二度目・三度目の実行で、どこから続きをやれば良いか、容易にわかります。
また、多重実行できないように、ファイルを排他オープンにします。「ゆっくり」アップロードする都合上、2個以上のプロセスで実行する必要がないので。
さて、アップロードが最後まで完了しますと、archiveidを発行します。
:archiveid XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXQNqcmFB3ta-XXXXXXXXXXXXXXXK9Td9_XXXXXXXXIGsbGggMs6Qtsr_XXXXXXXXXXZEU-XXXXXXXXXXXXXXXXXXXXXXXXXXXpU7-XXXX
こうしておけば、アップロードが完了した後に、もう一度上げなおす、という問題を防ぐことができます。
このarchiveidは大変重要で、後でダウンロードしたり、削除する時に必要です。
紛失しても取得はできるのですが、何時間も掛かってしまう、という情報がネットに散見されます。
こういう感じで、ディスクイメージを保管しようと頑張っています。
後日談有りましたら、情報発信して行こうと思います。