dagtools
IIJ IoTサービス ストレージ専用コマンドラインツール
インストール
ご利用の環境に該当するパッケージを以下からダウンロードしてご利用ください。
Linux (RHEL/CentOS kernel-2.6.18-274 以降、CentOS 6.0 以降を推奨)
- 64 bit: dagtools-linux-amd64-1.5.0.tar.gz
- 32 bit: dagtools-linux-386-1.5.0.tar.gz
Mac OS X (10.6 以降)
Windows (XP 以降)
- 64 bit: dagtools-windows-amd64-1.5.0.zip
- 32 bit: dagtools-windows-386-1.5.0.zip
設定
[dagtools] セクション
proxy | HTTP Proxy を指定 |
---|---|
verbose | コマンドの実行内容を表示(-v オプションと同じ) |
debug | デバッグモードで実行(-d オプションと同じ) |
concurrency | 並列実行数(default: 1) マルチパートアップロードの際のパートのアップロードの並列実行数となります。 |
tempDir | 一時ファイルの保存先 標準入力を使用したアップロードの場合は一時的にこのディレクトリの保存されます。 |
[logging] セクション
type | ログ出力の種類(none, file, stdout, stderr) |
---|---|
file | file タイプ時の出力先のファイルパス |
[storage] セクション
endpoint | IIJ IoTサービスのStorage APIのエンドポイント |
---|---|
accessKeyId | APIのアクセスキーID |
secretAccessKey | APIのシークレットアクセスキー |
secure | SSL/TLSプロトコルを用いた通信の暗号化(HTTPS)を使用するかどうか(true,false) |
multipartChunkSize | マルチパートアップロードのチャンクサイズ(Bytes)。 アップロードするファイルが指定のサイズより大きい場合にはマルチパートアップロードとなり、 このサイズで分割してアップロードします。このサイズを下回る場合にはPUT Objectとなります。 |
retry | HTTP/HTTPS リクエスト失敗時のリトライ回数 (デフォルト: 2) リトライしない場合は 0 を指定してください。 |
retryInterval | リトライを実施する間隔(ミリ秒単位, デフォルト: 3000) 1秒 = 1000 となります。 |
設定例
[dagtools] debug = false verbose = true proxy = concurrency = 2 tempDir = /var/tmp [logging] type = file file = dagtools.log [storage] endpoint = s3api.iot.iij.jp accessKeyId = <Access Key Id> secretAccessKey = <Secret Access Key> secure = true multipartChunkSize = 1073741824 # 1GB retry = 2 # number of retries retryInterval = 3000 # 3.0 seconds
<Access Key Id> および <Secret Access Key> はサービスオンラインより払い出されたアクセスキーIDとシークレットアクセスキーとなります。
使い方
Usage: dagtools [-h] [-d] [-v] [-f <config file>] <command> [<args>] Options: -d debug mode -f string specify an alternate configuration file (default: ./dagtools.ini or /etc/dagtools.ini) -h print a help message and exit -v verbose mode -version show version Commands: ls: list buckets or objects cat: get an object and print to standard output get: get an object and write to a file exist: check to exist buckets/objects rm: delete a bucket or object[s] put: put a bucket or object[s] help: print a command usage sync: synchronize with objects on DAG storage and local files policy: manage a bucket policy (put, cat, rm) space: display used storage space traffic: display network traffics
実行例
バケット新規作成(PUT Bucket)
$ dagtools put mybucket
ファイルのアップロード(PUT Object)
単一のファイルをアップロード:
$ dagtools put path/to/file mybucket:foo/bar/my-object or $ dagtools put mybucket:foo/bar/my-object < path/to/file
複数のファイルをアップロード:
$ dagtools put path/to/file1 path/to/file2 mybucket:foo/bar/ $ dagtools put path/to/file* mybucket:foo/bar/
ディレクトリを指定してアップロード:
# 以下の場合はオブジェクトキーにディレクトリ名を含みます (foo/bar/dir/...) $ dagtools put -r path/to/dir/ mybucket:foo/bar/ # 以下の場合はオブジェクトキーにディレクトリ名は含みません (foo/bar/...) $ dagtools put -r path/to/dir/ mybucket:foo/bar
オブジェクトの取得(GET Object)
カレントディレクトリに書き出す:
$ dagtools get mybucket:foo/bar/my-object
上記の例では my-object というファイル名でカレントディレクトリに保存されます。
書き込み先を指定して書き出す:
$ dagtools get mybucket:foo/bar/my-object path/to/file
ディレクトリを指定して一括で取得する:
$ dagtools get -r mybucket:foo/bar/dir/ path/to/directory/
- 末尾にスラッシュを付けた場合には、そのディレクトリにサブディレクトリを作成します。(上記の例では path/to/directory/dar/ が作られます)
- 逆に付けなかった場合には、そのディレクトリ名に置き換えられます。(上記の例では foo/bar/dir/ は path/to/directory/ として格納します)
オブジェクトの内容を表示(標準出力):
$ dagtools cat mybucket:foo/bar/my-object
バケットの削除(DELETE Bucket)
空のバケットを削除:
$ dagtools rm mybucket
オブジェクトが1つ以上存在する場合は削除されません。
バケット内の全てオブジェクトも一緒に削除:
$ dagtools rm -r mybucket
オブジェクトの削除(DELETE Objects)
単一のオブジェクトを削除:
$ dagtools rm mybucket:foo/bar/my-object
ディレクトリを指定して削除:
$ dagtools rm -r mybucket:foo/bar/
ファイルのプレフィックスを指定して削除:
$ dagtools rm mybucket:foo/bar/my-*
削除したオブジェクトを表示:
$ dagtools rm -v -r mybucket:foo/
バケットの一覧表示(List Buckets)
$ dagtools ls
オブジェクトの一覧表示(List Objects)
ルートディレクトリのオブジェクト一覧:
$ dagtools ls mybucket
指定したディレクトリのオブジェクト一覧:
$ dagtools ls mybucket:foo or $ dagtools ls mybucket:foo/
オブジェクトのサイズを読みやすい形式(Human-Readable)で表示:
$ dagtools ls -h mybucket:foo
サブディレクトリを再帰的に表示:
$ dagtools ls -r mybucket:foo
指定したファイルのプレフィックスに一致するオブジェクトのみ表示:
$ dagtools ls mybucket:foo/bar/my*
TSV形式で表示:
$ dagtools ls -tsv mybucket:foo
ETagも含めてリストを表示する:
$ dagtools ls -etag mybucket:foo
ディレクトリを同期
- ローカルのディレクトリとDAGストレージのバケット/ディレクトリ間で片方向の同期を行う機能です。
- ファイルの更新日時とサイズを元に変更を検出し、2回目以降の同期は変更されているファイルのみアップロード/ダウンロードします。
- ファイルの削除は同期されません
リモートストレージからローカルのディレクトリに同期:
$ dagtools sync mybucket:foo/bar/ /path/to/local-dir/
ローカルのディレクトリからリモートストレージに同期:
$ dagtools sync /path/to/local-dir/ mybucket:foo/bar/
同期の状況を表示:
$ dagtools -v sync /path/to/local-dir/ mybucket:foo/bar/
確認(dry-run):
$ dagtools -v sync -n /path/to/local-dir/ mybucket:foo/bar/
バケットポリシーの登録(PUT Bucket policy)
$ dagtools policy put mybucket policy.json or $ dagtools policy put mybucket < policy.json
バケットポシリーの取得(GET Bucket policy)
標準出力に表示:
$ dagtools policy cat mybucket
バケットポリシーの削除(DELETE Bucket policy)
$ dagtools policy rm mybucket
ストレージ使用量の取得(GET Service space)
$ dagtools space
ストレージに対するネットワーク通信量の取得(GET Service traffic)
日付を指定して取得:
$ dagtools traffic 20150401
先月1日から今日までの一覧を取得する:
$ dagtools traffic -b 1
バケットまたはオブジェクトの存在確認(HEAD Bucket, HEAD Object)
バケットの存在確認:
$ dagtools exist mybucket
オブジェクトの存在確認:
$ dagtools exist mybucket:foo
終了ステータスで結果を確認することができます。存在する場合: 0存在しない場合(エラー): 1
表示オプション(-v)が有効の場合は標準出力に結果を表示します。
コマンド引数に複数のバケットまたはオブジェクトを指定することもできます。
その他
終了ステータスについて
終了ステータスはdagtools返されたサービスからのレスポンス内容を反映します。
終了ステータス
レスポンスが2xxだった場合: 0
レスポンスが4xx又は5xxだった場合: 1
終了ステータスは、一般的な方法でスクリプトから参照する事が可能です。 たとえばWindowsであれば環境変数 %ERRORLEVEL% を参照する事で、またLinuxであれば $? を参照する事で値を確認できます。
エラー時のメッセージについて
dagtoolsが何らかのエラーを受け取った場合、以下のフォーマットで標準エラー出力にメッセージが出力されます。
[Error] <レスポンスコード> <メッセージ> (<リクエストID>)
- レスポンスコードは、受信したHTTPレスポンスコードです。
- メッセージは、発生した問題を記述したメッセージです。
- リクエストIDは個々のリクエストに付与される識別子で、サポートへのお問い合わせの際にお知らせ頂くものです。