cp コマンドを使用すると、同一リージョン内のソースバケットから宛先バケットへオブジェクトをコピーするか、または同一バケット内の別のディレクトリへコピーできます。
注意事項
cp コマンドは、クロスアカウントおよびクロスリージョンでのコピー操作をサポートしていません。アカウント間またはリージョン間でオブジェクトをコピーまたは移行するには、データオンライン移行 を使用してください。
このコマンドでは、完全なオブジェクトのみがコピーされます。マルチパートアップロードの未完了部分をコピーすることはできません。
ossutil 1.6.16 以降では、バイナリ名として ossutil をそのまま使用でき、名称変更は不要です。それ以前のバージョンでは、オペレーティングシステムに応じてバイナリ名を変更する必要があります。 詳細については、「ossutil の使い始め」をご参照ください。
権限
デフォルトでは、Alibaba Cloud アカウント (root ユーザー) のみがすべての API オペレーションを実行する権限を持ちます。このコマンドを実行するには、RAM ユーザーまたは RAM ロールに対して、Alibaba Cloud アカウントまたは管理者が RAM ポリシー または バケットポリシー を介して必要な権限を付与する必要があります。
API アクション | 説明 |
| 同一バケット内、または同一リージョン内の異なるバケット間でオブジェクトをコピーします。 |
| |
| 任意指定。特定のバージョンのオブジェクトをコピーする場合に必要です。 |
| 任意指定。コピー操作にオブジェクトタグ付けが関係する場合に必要です。 |
| |
| 任意指定。コピー操作に特定のオブジェクトバージョンのタグが関係する場合に必要です。 |
| 任意指定。KMS を使用したサーバ側暗号化を伴うコピー操作の場合に必要です。 |
|
コマンド構文
ossutil cp cloud_url cloud_url [options]以下の表に、パラメーターおよびオプションについて説明します。
パラメーター | 説明 |
cloud_url | ソースおよび宛先の OSS オブジェクトパス。形式は |
-r, --recursive | 再帰的な操作を実行します。このオプションを指定すると、ossutil は指定されたプレフィックスに一致するすべてのオブジェクトに対して操作を適用します。指定しない場合は、単一の指定オブジェクトに対してのみ操作が適用されます。 |
-f --force | 確認プロンプトを表示せずに操作を強制的に実行します。 |
-u, --update | 宛先オブジェクトが存在しない場合、またはソースオブジェクトの最終更新時刻が宛先オブジェクトより新しい場合にのみ、オブジェクトをコピーします。 |
--disable-ignore-error | バッチ操作中にエラーを無視しません。 |
--only-current-dir | 現在のディレクトリ内のオブジェクトのみをコピーし、サブディレクトリは無視します。 |
-bigfile-threshold | 再開可能なコピーのサイズしきい値。単位:バイト。 デフォルト値:100 MB 有効範囲:0 ~ 9223372036854775807 |
--part-size | マルチパートコピー操作における各パートのサイズ。単位:バイト。デフォルトでは、ossutil がオブジェクトサイズに基づいて適切なパートサイズを自動計算します。 有効範囲:1 ~ 9223372036854775807 |
--checkpoint-dir | 再開可能なコピーのチェックポイント情報を格納するディレクトリ。再開可能なコピーが失敗した場合、ossutil は自動的に |
--encoding-type | オブジェクト名を URL エンコーディングする場合は、url を指定します。このオプションを指定しない場合、オブジェクト名はエンコーディングされません。 |
--include | 指定したパターンに一致するすべてのオブジェクトを含めます。 |
--exclude | 指定したパターンに一致するすべてのオブジェクトを除外します。 |
--meta | オブジェクトのメタデータを設定します。形式は |
--acl | オブジェクトのアクセス制御リスト (ACL)。有効な値:
|
--disable-crc64 | CRC-64 データ整合性チェックを無効化します。デフォルトでは、ossutil のデータ転送において CRC-64 が有効になっています。 |
--payer | リクエストの支払者を指定します。アクセス料金(データ転送やリクエストなど)をリクエスターに請求する場合は、このオプションを requester に設定します。 |
-j, --jobs | バッチ操作の同時実行タスク数。デフォルト値:3。有効範囲:1 ~ 10000。 |
--parallel | 単一オブジェクト操作の同時実行タスク数。有効範囲:1 ~ 10000。このオプションを指定しない場合、ossutil は操作タイプおよびオブジェクトサイズに基づいて値を決定します。 |
--version-id | 特定のバージョンのオブジェクトをコピーします。このオプションは、バージョン管理が有効化されたバケットでのみ使用可能です。 |
--start-time | Unix タイムスタンプ。指定した場合、この時刻より前に最終更新されたオブジェクトは無視されます。 説明 このパラメーターは ossutil 1.7.18 以降でのみサポートされています。ossutil のアップグレード方法については、「update (ossutil のアップグレード)」をご参照ください。 |
--end-time | Unix タイムスタンプ。指定した場合、この時刻より後に最終更新されたオブジェクトは無視されます。 説明
|
このコマンドのその他の共通オプションについては、「共通オプション」をご参照ください。
デフォルトの同時実行数がパフォーマンス要件を満たさない場合は、-j, --jobs および --parallel オプションを調整してパフォーマンスをチューニングできます。デフォルトでは、ossutil はオブジェクトサイズに基づいて parallel の値を計算します。バッチでラージオブジェクトを転送する場合、実際の同時実行数は jobs の値と parallel の値の積になります。
ECS インスタンスまたはコマンドを実行するサーバーのネットワーク、メモリ、CPU などのリソースが制限されている場合は、同時実行数を 100 未満に減らすことを推奨します。リソースが十分に活用されていない場合は、必要に応じて同時実行数を増やすことができます。
過度に高い同時実行数は、スレッド切り替えのオーバーヘッドおよびリソース競合によりパフォーマンスを低下させ、EOF エラーを引き起こす可能性があります。マシンのリソースに応じて、-j, --jobs および --parallel オプションを調整してください。ストレステストを実施する場合は、低い同時実行数から始め、最適な値を見つけるために段階的に増加させることを推奨します。
例
以下の例では Linux システムを使用しています。ご利用のオペレーティングシステムおよび実際の環境に応じてパラメーターを修正してください。例では以下の前提条件を想定しています。
ソースバケット:examplebucket1
ソースバケット内のソースディレクトリ 1:srcfolder1
ソースバケット内のソースディレクトリ 2:srcfolder2
宛先バケット:examplebucket2
宛先バケット内の宛先ディレクトリ:desfolder
単一オブジェクトのコピー
同一バケット内の 1 つのディレクトリから別のディレクトリへオブジェクトをコピーし、オブジェクト名を example.txt に変更します。
ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder2/example.txt 複数オブジェクトのバッチコピー
バッチコピーの動作は、ソースパスがスラッシュ (/) で終わるかどうかによって異なります。パスがスラッシュで終わらない場合、そのプレフィックスを持つすべてのオブジェクトがコピーされます。パスがスラッシュで終わる場合、そのディレクトリ直下にあるオブジェクトのみがコピーされます。
ソースバケット examplebucket1 内の srcfolder1 ディレクトリに以下のオブジェクトが含まれていると仮定します。
srcfolder1/exampleobject1.txt
srcfolder1/exampleobject2.png
srcfolder1/dir1/
srcfolder1/dir1/exampleobject3.jpg
srcfolder1/dir2/
srcfolder1/dir2/exampleobject4.jpgソースパスがスラッシュ (/) で終わらない場合
ossutil cp oss://examplebucket1/srcfolder1 oss://examplebucket2 -rコピーが完了後、宛先バケット examplebucket2 には以下のオブジェクトが存在します。
srcfolder1/exampleobject1.txt srcfolder1/exampleobject2.png srcfolder1/dir1/ srcfolder1/dir1/exampleobject3.jpg srcfolder1/dir2/ srcfolder1/dir2/exampleobject4.jpgソースパスがスラッシュ (/) で終わる場合
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2 -rコピーが完了後、宛先バケット examplebucket2 には以下のオブジェクトが存在します。
exampleobject1.txt exampleobject2.png dir1/ dir1/exampleobject3.jpg dir2/ dir2/exampleobject4.jpg増分コピーの実行
バッチコピー中に --update オプションを指定すると、ossutil は宛先オブジェクトが存在しない場合、またはソースオブジェクトの最終更新時刻が宛先オブジェクトより新しい場合にのみオブジェクトをコピーします。コマンドは以下のとおりです。
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ -r --updateこのオプションを使用すると、すでに正常にコピー済みのオブジェクトをスキップすることで、失敗したバッチコピー操作を再開できます。
現在のディレクトリ内のオブジェクトのみをコピーし、サブディレクトリを無視
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder2/ --only-current-dir -r
指定時間範囲内のオブジェクトのコピー
UTC + 08:00 時間帯で 2023 年 10 月 31 日 10:09:18 から 2023 年 10 月 31 日 12:55:58 の間に最終更新された srcfolder1 内のオブジェクトのみをコピーします。
ossutil cp -r oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ --start-time 1698718158 --end-time 1698728158条件付きでオブジェクトをコピー
--include および --exclude オプションを使用して、特定の条件を満たすオブジェクトのみをコピーします。
JPG フォーマット以外のすべてのオブジェクトをコピーします
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --exclude "*.jpg" -r名前に abc を含み、JPG または TXT フォーマット以外のすべてのオブジェクトをコピーします
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/desfolder/ --include "*abc*" --exclude "*.jpg" --exclude "*.txt" -r
オブジェクトのメタデータを変更してコピー
--meta オプションを使用してオブジェクトのメタデータを変更します。形式は header:value#header:value... です。
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --meta=Cache-Control:no-cacheRequester Pays モードでのコピー
ソースバケットから宛先バケットへオブジェクトをコピーし、Requester Pays モードを指定します。
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --payer=requesterストレージクラスを変更してコピー
オブジェクトを 上書き する際に、--meta オプションを追加してストレージクラスを変更できます。有効な値:
標準
低頻度アクセス
アーカイブストレージ
コールドアーカイブストレージ
ディープコールドアーカイブストレージ
ストレージクラスの詳細については、「ストレージクラス」をご参照ください。
--meta オプションを使用してストレージクラスを変更すると、既存のカスタムファイルメタデータがデフォルトで上書きされます。このメタデータを変更時に保持するには、ossutil 2.0 を使用してください。
特定のオブジェクトのストレージクラスをアーカイブストレージに変更
ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta X-oss-Storage-Class:Archive指定したフォルダ内のすべてのオブジェクトのストレージクラスを標準ストレージに変更
ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta X-oss-Storage-Class:Standard -r
cp コマンドを使用してオブジェクトのストレージクラスを変更する場合、PUT リクエストに対する課金は、オブジェクトのソースストレージクラスに基づいて行われ、宛先バケットに請求されます。
オブジェクトを低頻度アクセス、アーカイブストレージ、コールドアーカイブストレージ、またはディープコールドアーカイブストレージに変換し、最小保存期間より短い期間で保存した場合、早期削除料金が課金されます。詳細については、「ストレージ料金」をご参照ください。
cp コマンドを使用して、アーカイブストレージ、コールドアーカイブ、またはディープコールドアーカイブストレージのオブジェクトを標準または低頻度アクセスに変換するには、まず restore (オブジェクトを解凍する) コマンドを使用してオブジェクトを解凍する必要があります。オブジェクトが解凍されると、cp コマンドを使用してそのストレージクラスを変更できます。アーカイブ直接読み取りが有効になっている場合、アーカイブストレージのオブジェクトを解凍することなく、そのストレージクラスを変更できます。
cp コマンドを使用して 100 MB より大きいオブジェクトのストレージクラスを変更する場合、ossutil はデフォルトでオブジェクトサイズに基づいて適切なパートサイズを計算します。自動計算されたパートサイズが要件を満たさない場合は、--part-size オプションを使用してパートサイズを指定できます。パート数が 10,000 を超えないようにしてください。
タグを設定してコピー
オブジェクトを上書きする際に、--tagging オプションを追加してオブジェクトタグを追加または変更できます。複数のタグはアンパサンド (&) で区切ります。コマンドは以下のとおりです。
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --tagging "abc=1&bcd=2&……"オブジェクトタグ付けの詳細については、「object-tagging (オブジェクトタグ付け)」をご参照ください。
サーバ側暗号化を使用してコピー
オブジェクトをバケットにコピーする際に、サーバ側暗号化方式を指定してオブジェクトを暗号化できます。サーバ側暗号化の詳細については、「サーバ側暗号化」をご参照ください。
オブジェクトをコピーし、AES256 を暗号化方式として指定
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/srcfolder2/ --meta=x-oss-server-side-encryption:AES256オブジェクトをコピーし、KMS を暗号化方式として指定
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --meta=x-oss-server-side-encryption:KMS重要KMS を使用して暗号化する場合、OSS は KMS を呼び出してオブジェクトのマスターキーを生成します。この操作により、KMS API 呼び出しの課金が発生します。詳細については、「KMS の課金」をご参照ください。
オブジェクトをコピーし、KMS 暗号化の CMK ID を指定
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --meta=x-oss-server-side-encryption:KMS#x-oss-server-side-encryption-key-id:7bd6e2fe-cd0e-483e-acb0-f4b9e1******
以前のオブジェクトバージョンを復元
バケットのバージョン管理を有効化すると、上書きおよび削除されたオブジェクトは以前のバージョンとして保存されます。--version-id オプションを cp コマンドに追加することで、以前のバージョンを復元できます。
まず、ls --all-versions コマンドを使用して、オブジェクトのすべてのバージョン ID を取得します。その後、--version-id オプションを使用して特定のバージョンをコピーします。
--version-id オプションは、バージョン管理が有効化されたバケットでのみ使用可能です。バケットのバージョン管理を有効化するコマンドの詳細については、「bucket-versioning (バージョン管理)」をご参照ください。
ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/ --version-id CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRkクロスアカウントコピー
-e、-i、および -k の共通オプションを使用して、別の Alibaba Cloud アカウントが所有する中国 (上海) リージョンのソースバケット examplebucket のルートディレクトリにある srcobject.png オブジェクトを、宛先バケット destbucket にコピーします。
バケットが配置されているリージョンのエンドポイントを指定する必要があります。詳細については、「リージョンとエンドポイント」をご参照ください。
ossutil cp oss://examplebucket/srcobject.png oss://destbucket -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecretセキュリティに関するヒント:コマンドラインに AccessKey を含めることはセキュリティリスクです。自動化または長期運用を想定したタスクでは、ソースアカウントに RAM ロールを作成し、宛先アカウントにその RAM ロールを引き受ける権限を付与することで、より安全なクロスアカウントアクセスを実現することを推奨します。