# Digitalocean

## 概要

DigitalOcean Spacesバックエンドを使用してSingularityストレージオブジェクトの設定を更新します。

## 使用法

```
singularity storage update s3 digitalocean [command options] <name|id>
```

## 説明

DigitalOcean Spacesは、オブジェクトストレージサービスです。このバックエンドを使ってSingularityストレージオブジェクトを設定、更新、または削除することができます。

以下は、各コマンドオプションの説明です：

\--env-auth: 実行時にAWSの認証情報（環境変数またはEC2/ECSのメタデータ）を取得します。

access\_key\_idとsecret\_access\_keyが空白の場合にのみ適用されます。

例： | false | 次の手順でAWSの認証情報を入力します。 | true | 環境（環境変数またはIAM）からAWSの認証情報を取得します。

\--access-key-id: AWSのアクセスキーIDです。

匿名アクセスや実行時の認証情報を使用する場合は、空白にしてください。

\--secret-access-key: AWSのシークレットアクセスキー（パスワード）です。

匿名アクセスや実行時の認証情報を使用する場合は、空白にしてください。

\--region: 接続するリージョンです。

S3のクローンを使用しており、リージョンを持っていない場合は、空白のままにしてください。

例： | | 確定できない場合に使用します。 | | v4シグネチャと空のリージョンを使用します。 | other-v2-signature | v4シグネチャが機能しない場合にのみ使用します。 | | 例：Jewel/v10 CEPHより前のバージョン。

\--endpoint: S3 APIのエンドポイントです。

S3クローンを使用している場合は必須です。

例： | syd1.digitaloceanspaces.com | DigitalOcean Spaces Sydney 1 | sfo3.digitaloceanspaces.com | DigitalOcean Spaces San Francisco 3 | fra1.digitaloceanspaces.com | DigitalOcean Spaces Frankfurt 1 | nyc3.digitaloceanspaces.com | DigitalOcean Spaces New York 3 | ams3.digitaloceanspaces.com | DigitalOcean Spaces Amsterdam 3 | sgp1.digitaloceanspaces.com | DigitalOcean Spaces Singapore 1

\--location-constraint: リージョンと一致する必要があるロケーション制約です。

確かでない場合は空白にしてください。バケットの作成時にのみ使用されます。

\--acl: バケットを作成したり、オブジェクトを保存したり、コピーしたりする際に使用するACLです。

このACLはオブジェクトの作成時に使用されます。bucket\_aclが設定されていない場合は、バケットの作成時にも使用されます。

詳細については、[こちらのドキュメント](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl)を参照してください。

注意：このACLは、S3がソースからACLをコピーするのではなく、新しく書き込むため、サーバーサイドでオブジェクトをコピーすると適用されます。

aclが空の文字列の場合、X-Amz-Aclヘッダーは追加されず、デフォルト（private）が使用されます。

\--bucket-acl: バケットの作成時に使用される指定されたACLです。

詳細については、[こちらのドキュメント](https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl)を参照してください。

注意：このACLは、バケットの作成時のみ適用されます。設定されていない場合は、代わりに「acl」が使用されます。

「acl」と「bucket\_acl」が空の文字列の場合、X-Amz-Aclヘッダーは追加されず、デフォルト（private）が使用されます。

例： | private | オーナーにFULL\_CONTROLの権限が与えられます。 | | 他のユーザーにはアクセス権がありません（デフォルト）。 | public-read | オーナーにFULL\_CONTROLの権限が与えられます。 | | AllUsersグループにREADのアクセス権が与えられます。 | public-read-write | オーナーにFULL\_CONTROLの権限が与えられます。 | | AllUsersグループにREADおよびWRITEのアクセス権が与えられます。 | | バケットのこの権限を付与することは一般的に推奨されません。 | authenticated-read | オーナーにFULL\_CONTROLの権限が与えられます。 | | AuthenticatedUsersグループにREADのアクセス権が与えられます。

\--upload-cutoff: チャンク化アップロードに切り替えるためのカットオフ値です。

この値より大きいファイルは、chunk\_sizeのチャンクごとにアップロードされます。 最小値は0で、最大値は5 GiBです。

\--chunk-size: アップロードに使用するチャンクサイズです。

upload\_cutoffを超えるファイルやサイズの不明なファイル（"rclone rcat"からのものや"rclone mount"やGoogleフォトやGoogleドキュメントでアップロードされたものなど）は、このチャンクサイズを使用してマルチパートアップロードされます。

注意："--s3-upload-concurrency"は、転送ごとにメモリに対してこのチャンクサイズのチャンクがバッファリングされます。

高速リンクで大きなファイルを転送しており、十分なメモリがある場合は、チャンクサイズを増やすと転送速度が向上します。

Rcloneは、ファイルのサイズがわかっている大きなファイルをアップロードする際は、10,000個のチャンクの制限を超えないように、チャンクサイズを自動的に増やします。

サイズがわからないファイルは、設定されたchunk\_sizeでアップロードされます。デフォルトのチャンクサイズは5 MiBで、最大で10,000個のチャンクがあるため、デフォルトでは48 GiBまでのファイルをストリームアップロードできます。より大きなファイルをストリームアップロードする場合は、chunk\_sizeを増やす必要があります。

チャンクサイズを増やすと、"-P"フラグで表示される進行状況の統計の正確性が低下します。Rcloneは、AWS SDKがバッファに格納されたチャンクを送信したときにチャンクが送信されたと見なし、まだアップロード中かもしれない状態であっても進捗を報告します。 チャンクサイズが大きいほど、AWS SDKのバッファも大きくなり、真実から逸脱した進行状況の報告となります。

\--max-upload-parts: マルチパートアップロードでの最大パート数です。

このオプションは、マルチパートアップロード時に使用するパートの最大数を定義します。

AWS S3の10,000個のパートの仕様をサポートしていないサービスの場合に有用です。

Rcloneは、サイズがわかっている大きなファイルをアップロードする際に、このチャンクサイズを自動的に増やして、このチャンク数の制限以下になるようにします。

\--copy-cutoff: マルチパートコピーに切り替えるためのカットオフ値です。

サーバーサイドでコピーする必要があるこの値より大きなファイルは、このサイズのチャンクでコピーされます。

最小値は0で、最大値は5 GiBです。

\--disable-checksum: オブジェクトのメタデータにMD5チェックサムを保存しないようにします。

通常、rcloneはアップロードする前に入力のMD5チェックサムを計算し、オブジェクトのメタデータに追加するため、大きなファイルのアップロードを開始するのに長い待ち時間が生じることがあります。

\--shared-credentials-file: 共有認証情報ファイルへのパスです。

env\_auth=trueの場合、rcloneは共有認証情報ファイルを使用することができます。

この変数が空の場合、rcloneは「AWS\_SHARED\_CREDENTIALS\_FILE」という環境変数を探します。環境変数の値が空の場合は、現在のユーザーのホームディレクトリがデフォルトになります。

```
  Linux/OSX: "$HOME/.aws/credentials"
  Windows:   "%USERPROFILE%\.aws\credentials"
```

\--profile: 共有認証情報ファイルで使用するプロファイルです。

env\_auth=trueの場合、rcloneは共有認証情報ファイルを使用することができます。この変数はそのファイルで使用するプロファイルを制御します。

空の場合、環境変数「AWS\_PROFILE」または「default」が設定されていない場合にデフォルト値として使用されます。

\--session-token: AWSのセッショントークンです。

\--upload-concurrency: マルチパートアップロードの並行数です。

同じファイルのチャンクを同時にアップロードします。

高速リンク上で大量の大きなファイルをアップロードしており、これらのアップロードが帯域幅を十分に利用していない場合は、この数を増やすと転送速度が向上する場合があります。

\--force-path-style: trueの場合、パススタイルアクセスを使用します。falseの場合は、仮想ホストスタイルを使用します。

true（デフォルト）の場合、rcloneはパススタイルアクセスを使用します。falseの場合、rcloneは仮想パススタイルを使用します。詳細については、[AWS S3のドキュメント](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html#access-bucket-intro)を参照してください。

一部のプロバイダ（AWS、Aliyun OSS、Netease COS、またはTencent COSなど）では、この設定に応じて自動的に設定されます。

\--v2-auth: trueの場合、v2認証を使用します。

false（デフォルト）の場合、rcloneはv4認証を使用します。設定されている場合、rcloneはv2認証を使用します。

v4シグネチャが機能しない場合にのみ、このオプションを使用してください。例：Jewel/v10 CEPHより前のバージョン。

\--list-chunk: リストのチャンクサイズ（各ListObject S3リクエストごとのレスポンスリスト）です。

このオプションは、AWS S3仕様のMaxKeys、max-items、またはpage-sizeとも呼ばれます。 ほとんどのサービスは、1000個以上が要求されていても、レスポンスリストを1000個に切り詰めます。 AWS S3では、これはグローバルな最大値であり、変更できません。詳細については、[AWS S3](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html)を参照してください。 Cephでは、「rgw list buckets max chunk」オプションで増やすことができます。

\--list-version: 使用するListObjectsのバージョンです：1、2、または0（自動）。

S3が最初にリリースされたとき、バケット内のオブジェクトを列挙するためのListObjects呼び出しが提供されていました。

しかし、2016年5月にListObjectsV2呼び出しが導入されました。これははるかに高速なパフォーマンスを提供し、できるだけ使用する必要があります。

デフォルトの設定（0）では、rcloneはプロバイダに応じてどのリストオブジェクトメソッドを呼び出すかを推測します。推測が誤った場合は、ここで手動で設定することができます。

\--list-url-encode: リストのURLエンコードを行うかどうか：true/false/unset

一部のプロバイダは、リストにURLエンコードをサポートしており、コントロール文字をファイル名で使用する場合にこれがより信頼性の高い方法です。これを設定がunset（デフォルト）になっている場合、rcloneはプロバイダの設定に従って適用するものを選択しますが、ここでrcloneの選択を上書きすることができます。

\--no-check-bucket: 該当する場合、バケットの存在をチェックせず、作成しません。

バケットが既に存在する場合、rcloneが行うトランザクションの数を最小限にするために使用することができます。

ユーザーにバケットの作成権限がない場合は必要です。v1.52.0以前では、バグによりこれが静かにパスされていました。

\--no-head: 該当する場合、アップロードしたオブジェクトをHEADして整合性をチェックしません。

rcloneはPUT後に200 OKのメッセージを受け取った場合、アップロードが正常に完了したと見なします。

特に、以下を前提とします：

* メタデータ（modtime、ストレージクラス、コンテンツタイプなど）がアップロード時と同じであること
* サイズがアップロード時と同じであること

リクエストの以下の項目を1パートのPUTのレスポンスから読み取ります：

* MD5SUM
* アップロード日時

マルチパートアップロードの場合、これらの項目は読み取られません。

サイズの不明なソースオブジェクトをアップロードする場合、rcloneはHEADリクエストを実行します。

このフラグを設定すると、アップロードの失敗が検出されない可能性が増すため、通常の操作では推奨されません。実際には、このフラグを設定してもアップロードの失敗が検出される可能性は非常に低いです。

\--no-head-object: 該当する場合、GETの前にHEADリクエストを行いません。

\--encoding: バックエンドのエンコーディングです。

詳細については、[概要のエンコーディングセクション](https://github.com/data-preservation-programs/singularity/blob/main/overview/README.md#encoding)を参照してください。

\--memory-pool-flush-time: 内部メモリバッファプールがフラッシュされる頻度です。

追加のバッファが必要なアップロード（たとえば、マルチパート）では、割り当てのためにメモリプールが使用されます。 このオプションは、未使用のバッファをどれくらいの頻度でプールから削除するかを制御します。

\--memory-pool-use-mmap: 内部メモリプールでmmapバッファを使用するかどうか。

\--disable-http2: S3バックエンドでのhttp2の使用を無効にします。

現在、s3（特にminio）バックエンドとHTTP/2の間に未解決の問題があります。HTTP/2は、s3バックエンドではデフォルトで有効になっていますが、ここで無効にすることもできます。問題が解決されたら、このフラグは削除されます。

参考：<https://github.com/rclone/rclone/issues/4673、https://github.com/rclone/rclone/issues/3631>

\--download-url: ダウンロード用のカスタムエンドポイントです。 通常、AWS S3は、CloudFrontネットワーク経由でダウンロードされたデータの転送費用が安いため、CloudFront CDN URLに設定されます。

\--use-multipart-etag: マルチパートアップロードでETagを使用して検証するかどうかを指定します。

これは、true、false、または未設定にする必要があります。

\--use-presigned-request: シングルパートアップロードに署名済みリクエストまたはPutObjectを使用するかどうかを指定します。

falseの場合、rcloneはAWS SDKのPutObjectを使用してオブジェクトをアップロードします。

rclone < 1.59のバージョンでは、署名付きリクエストを使用してシングルパートオブジェクトをアップロードし、このフラグをtrueにするとその機能を再び有効にできます。これは、例外的な状況やテスト以外では必要ありません。

\--versions: ディレクトリリストに古いバージョンを含めるかどうかを指定します。

\--version-at: 指定した時点でのファイルバージョンを表示します。

パラメータは、日付（"2006-01-02"）、日時（"2006-01-02 15:04:05"）、またはその時間より前の期間（"100d"または"1h"など）である必要があります。

このオプションを使用すると、ファイルの書き込み操作は許可されないため、ファイルのアップロードや削除はできません。

有効なフォーマットについては、[時間オプションのドキュメント](https://github.com/data-preservation-programs/singularity/blob/main/docs/README.md#time-option)を参照してください。

\--decompress: 該当する場合、gzipでエンコードされたオブジェクトを展開します。

"Content-Encoding: gzip"が設定されたまま、オブジェクトをAWS S3にアップロードできます。通常、rcloneはこれらのファイルを圧縮されたオブジェクトとしてダウンロードします。

このフラグが設定されている場合、rcloneはこれらのファイルを受け取る際に「Content-Encoding: gzip」で展開します。つまり、rcloneはサイズとハッシュをチェックできませんが、ファイルの内容は展開されます。

\--might-gzip: バックエンドがオブジェクトをgzipで圧縮する可能性がある場合に指定します。

通常、プロバイダはオブジェクトをダウンロードする際には変更を加えません。`Content-Encoding: gzip`でアップロードされていない場合、ダウンロード時には設定されません。

ただし、一部のプロバイダ（例：Cloudflare）は、オブジェクトを`Content-Encoding：gzip`で圧縮するかもしれません。

これを設定すると、rcloneが`Content-Encoding：gzip`とチャンク化された転送エンコーディングのオブジェクトをダウンロードすると、rcloneはオブジェクトを逐次展開します。

unset（デフォルト）に設定されている場合、rcloneはプロバイダの設定に従って適用するものを選択しますが、ここでrcloneの選択を上書きすることができます。

\--no-system-metadata: システムメタデータの設定と読み取りを抑制します。
