すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:オブジェクトのコピー

最終更新日:Oct 21, 2024

オブジェクトの内容を変更することなく、同じObject Storage Service (OSS) バケット内の別のディレクトリ、またはソースバケットと同じリージョンにある別のバケットにオブジェクトをコピーできます。 ossutilでは、cpコマンドを使用してオブジェクトをコピーできます。

使用上の注意

  • オブジェクトをコピーするには、oss:GetObjectoss:ListObjects、およびoss:PutObject権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

  • ossutil 1.6.16以降の場合、コマンドラインでossutilをバイナリ名として直接使用できます。 オペレーティングシステムに基づいてバイナリ名を更新する必要はありません。 1.6.16より前のossutilの場合、オペレーティングシステムに基づいてバイナリ名を更新する必要があります。 詳細は、「ossutilコマンドリファレンス」をご参照ください。

  • cpコマンドを実行して、別のAlibaba Cloudアカウントに属するバケット、または別のリージョンにあるバケットにオブジェクトをコピーすることはできません。 Alibaba Cloudアカウントまたはリージョン間でオブジェクトをコピーする場合は、ossimportまたはData Online Migrationを使用します。

  • cpコマンドを使用してオブジェクトをコピーできますが、パーツはコピーできません。

  • 追加可能なオブジェクトはコピーできません。

  • ソースオブジェクトに対する読み取り権限と、宛先バケットに対する読み取りおよび書き込み権限が必要です。 それ以外の場合、コピー操作は失敗します。 オブジェクトをコピーする方法の詳細については、「オブジェクトのコピー」をご参照ください。

コマンド構文

ossutil cp cloud_url cloud_url
[-r, --recursive]
[-f --force]
[-u --update]
[--disable-ignore-error]
[--only-current-dir]
[--bigfile-threshold <value>]
[--part-size <value>]
[--checkpoint-dir <value>]
[--encoding-type <value>]
[--include <value>]
[--exclude <value>]
[--meta <value>]
[--acl <value>]
[--disable-crc64]
[--payer <value>]
[-j, --job <value>]
[--parallel <value>]
[--version-id <value>]
[--start-time <value>]
[--end-time <value>]

次の表に、上記のコマンドのパラメーターとオプションを示します。

パラメータ /オプション

説明

cloud_url

ソースオブジェクトと宛先オブジェクトのパス。 形式: oss:// bucketname/objectname たとえば、srcobject.jpgという名前のソースオブジェクトをexamplebucketバケットから同じバケット内のdestobject.jpgという名前の宛先オブジェクトにコピーするには、ソースオブジェクトのパスをoss:// examplebucket/srcobject.jpgに設定し、宛先オブジェクトのパスをoss:// examplebucket /dobject.jpgに設定します。

-r, -- recursive

再帰操作。 このオプションを指定すると、指定された条件を満たすバケット内のすべてのオブジェクトに対して操作が実行されます。 このオプションを指定しない場合、指定されたオブジェクトに対してのみ操作が実行されます。

-f -- 力

確認のプロンプトなしでコマンドを強制的に実行することを指定します。

-u, -- update

オブジェクトが宛先バケットに存在しない場合、またはソースオブジェクトの最終変更時刻が宛先オブジェクトの最終変更時刻よりも遅い場合にのみ、ossutilがソースオブジェクトをコピーするように指定します。

-- disable-無視-エラー

バッチ操作中にエラーが無視されないように指定します。

-- only-current-dir

現在のディレクトリ内のオブジェクトのみをコピーするように指定します。 これらのサブディレクトリ内のサブディレクトリおよびオブジェクトはコピーされません。

-bigfile-threshold

操作に再開可能なアップロードを使用するためのオブジェクトサイズのしきい値。 単位はバイトです。

デフォルト値: 100 MB。

有効な値: 0 ~ 9223372036854775807

-- 部分サイズ

部品サイズを指定します。 単位はバイトです。 デフォルトでは、ossutilはオブジェクトサイズに基づいて部品サイズを決定します。

有効な値: 1 ~ 9223372036854775807

-- checkpoint-dir

再開可能アップロードコピータスクのチェックポイント情報が格納されるディレクトリ。 タスクが失敗すると、ossutilは自動的にという名前のディレクトリを作成します。. ossutil_checkpointディレクトリにチェックポイント情報を保存します。 タスクが成功すると、ossutilはディレクトリを削除します。 -- checkpoint-dirオプションを指定する場合は, ディレクトリを削除できることを確認してください。

-- encoding-type

オブジェクトの名前をエンコードするために使用されるメソッド。 値をurlに設定します。 このオプションを指定しない場合、オブジェクトの名前はエンコードされません。

-含める

指定された条件を満たすオブジェクトをコピーすることを指定します。

-除外

指定された条件を満たさないすべてのオブジェクトをコピーすることを指定します。

-メタ

オブジェクトメタデータ。 オブジェクトメタデータをheader:value#header:value形式で指定します。 例: Cache-Control:no-cache#Content-Encoding:gzip 詳細は、「set-meta」をご参照ください。

-- acl

オブジェクトのアクセス制御リスト (ACL) 。 有効な値:

  • デフォルト: オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じです。 これは、宛先オブジェクトのデフォルトのACL設定です。

  • private: バケット内のオブジェクトに対して読み取りおよび書き込み操作を実行できるのは、バケット所有者のみです。 他のユーザーはバケット内のオブジェクトにアクセスできません。

  • public-read: バケット内のオブジェクトに対して書き込み操作を実行できるのは、バケット所有者のみです。 匿名ユーザーを含む他のユーザーは、バケット内のオブジェクトに対してのみ読み取り操作を実行できます。 これにより、バケット内のデータへの無制限のアクセスと、予想外に高い料金が発生する可能性があります。 ユーザーが禁止されているデータまたは情報をアップロードすると、正当な利益と権利が侵害される可能性があります。 特別な場合を除き、オブジェクトACLをpublic-readに設定しないことを推奨します。

  • public-read-write: 匿名ユーザーを含むすべてのユーザーが、バケット内のオブジェクトに対して読み取りおよび書き込み操作を実行できます。 これにより、バケット内のデータへの無制限のアクセスと、予想外に高い料金が発生する可能性があります。 オブジェクトACLをpublic-read-writeに設定する場合は注意してください。

-- disable-crc64

CRC-64を無効にすることを指定します。 デフォルトでは、ossutilはデータ送信中にCRC-64を有効にします。

-- 支払人

リクエストの支払人。 指定されたパスのリソースにアクセスするリクエスタがトラフィックを支払い、料金を要求する場合は、このパラメータをリクエスタ。

-j, -- jobs

複数のオブジェクトに対して実行できる同時タスクの数。 有効な値: 1 ~ 10000 デフォルト値: 3。

-- 平行

1つのオブジェクトに対して実行できる同時タスクの数。 有効な値: 1 ~ 10000 このオプションを設定しない場合、ossutilは操作タイプとオブジェクトサイズに基づいて値を指定します。

-- version-id

コピーするオブジェクトのバージョンID。 このオプションは、バージョン管理が有効になっているバケット内のオブジェクトに対してのみ指定できます。

-- 開始時間

最後に変更された時間に基づいてオブジェクトをフィルタリングするための時間範囲の開始。 値は、UNIXの時刻形式に続くタイムスタンプです。 最終変更時刻がUNIXタイムスタンプより前のオブジェクトは無視されます。

説明

ossutil 1.7.18以降のみがこのパラメータをサポートしています。 ossutilの更新方法の詳細については、「update」をご参照ください。

-終了時間

最後に変更された時間に基づいてオブジェクトをフィルタリングする時間範囲の終了。 値は、UNIXの時刻形式に続くタイムスタンプです。 最終変更時刻がUNIXタイムスタンプより後のオブジェクトは無視されます。

説明
  • -- start-timeと -- end-timeの両方が指定されている場合、コマンドは、最終変更時刻が -- start-timeと -- end-timeで指定された範囲内にあるオブジェクトに対してのみ有効になります。

  • ossutil 1.7.18以降のみがこのパラメータをサポートしています。 ossutilの更新方法の詳細については、「update」をご参照ください。

オプションのデフォルト設定がパフォーマンス要件を満たしていない場合は、-j、-- jobs-- parallelオプションを使用してパフォーマンスを調整できます。 デフォルトでは、ossutilはオブジェクトサイズに基づいて -- parallelの値を計算します。 複数のラージオブジェクトをコピーする場合、同時実行タスクの実際の数は、-j, -- jobsの値に -- parallelの値を掛けて計算されます。

  • Elastic Compute Service (ECS) インスタンスまたはサーバーのネットワーク帯域幅、メモリ、CPUなどのリソースが制限されている場合は、同時実行値を100未満の値に調整することを推奨します。 ネットワーク帯域幅、メモリ、CPUなどのリソースがアイドル状態のままである場合、同時実行タスクの数を増やすことができます。

  • 同時タスクの数が多すぎると、スレッドが切り替えてリソースを競合するため、ossutilのコピー操作のパフォーマンスが低下する可能性があります。 さらに、EOF (end-of-file) エラーが発生することがある。 これらの問題を防ぐために、使用可能なリソースに基づいて -j、-- jobs-- parallelの値を調整できます。 ストレステストを実行するには、2つのオプションに小さな値を指定してから、最適な値に増分します。

サンプル環境

このトピックの例では、同じバケット内の異なるディレクトリ間およびLinuxのバケット間でオブジェクトをコピーする方法を示します。 実際のビジネスシナリオでサンプルコマンドを使用するには、オペレーティングシステムと環境に基づいてオプションとパラメーターの設定を変更する必要があります。 サンプル環境:

  • オペレーティングシステム: Linux

  • ソースバケット: examplebucket1

  • ソースバケットのディレクトリ1: srcfolder1

  • ソースバケットのディレクトリ2: srcfolder2

  • 宛先バケット: examplebucket2

  • 宛先バケットのディレクトリ: desfolder

ソースディレクトリをコピーするかどうかを指定する

ソースパスがスラッシュ (/) で終わっていない場合、ソースバケット内の指定されたプレフィックスを名前に含むすべてのオブジェクトが宛先バケットにコピーされます。 ソースパスがスラッシュ (/) で終わる場合、指定されたディレクトリ内のオブジェクトのみが宛先バケットにコピーされます。

たとえば、次のオブジェクトは、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

簡単なコピーを実行する

  • 単一のオブジェクトをコピーする

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/srcfolder2/                                 
  • 増分オブジェクトのコピー

    複数のオブジェクトをコピーするときに -- updateオプションを指定した場合、ossutilは、宛先オブジェクトが存在しない場合、またはソースオブジェクトの最終変更時刻が宛先オブジェクトの最終変更時刻よりも遅い場合にのみ、オブジェクトをコピーします。 次のコマンドを実行して、増分オブジェクトをコピーします。

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ -r --update

    このオプションを使用すると、コピーしたオブジェクトをスキップし、コピーに失敗したオブジェクトのみをコピーできます。

  • 一度に複数のオブジェクトをコピーする

    次のコマンドを実行して、最終変更時刻が10月31日10:09:18 (UCT + 8) から2023月31日12:55:58 (UTC + 8) の範囲内であるsrcfolder1ディレクトリ内のオブジェクトを2023コピーします。

    ossutil cp -r oss://examplebucket1/srcfolder1/ oss://examplebucket2/path2/ --start-time 1698718158 --end-time 1698728158
  • オブジェクトの名前変更

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/example.txt                        

    cpコマンドを実行してオブジェクトの名前を変更すると、元のオブジェクトが保持されます。 オブジェクトの名前を変更した後、元のオブジェクトを削除できます。

  • 現在のディレクトリ内のオブジェクトのみをコピーし、サブディレクトリ内のオブジェクトをスキップする

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder2/ --only-current-dir -r
  • オブジェクトのメタデータの変更

    オブジェクトをコピーするときは、-- metaオプションを使用してオブジェクトのメタデータを変更できます。 このオプションの値は、header:value#header:value... 形式です。

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --meta=Cache-Control:no-cache
  • pay-by-requesterが有効になっているバケットからpay-by-requesterが無効になっているバケットにオブジェクトをコピーします。

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/  --payer=requester

特定の条件を満たす複数のオブジェクトをコピーする

特定の条件を満たすオブジェクトをコピーするには、-- 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オプションを指定して、オブジェクトのストレージクラスを変更できます。 有効な値:

  • 標準

  • IA

  • アーカイブ

  • ColdArchive

  • ディープコールドアーカイブ

ストレージクラスの詳細については、「概要」をご参照ください。

重要

-- metaオプションを使用してオブジェクトのストレージクラスを変更すると、オブジェクトの既存のユーザーメタデータがデフォルトで上書きされます。 ストレージクラスを変換し、オブジェクトの既存のユーザーメタデータを保持する場合は、変換前にx-oss-metadata-directive:COPYオプションを使用して既存のメタデータを保持する必要があります。

オブジェクトの既存ユーザーメタデータ上書き

  • オブジェクトのストレージクラスをアーカイブに変更する

    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

オブジェクトの既存のユーザーメタデータを保持する

  • 次のコマンドを実行して、特定のオブジェクトのストレージクラスをIAに変更し、オブジェクトの既存のユーザーメタデータを保持します。

    ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta x-oss-metadata-directive:COPY
  • 次のコマンドを実行して、特定のディレクトリ内のすべてのオブジェクトのストレージクラスをStandardに変更し、オブジェクトの既存のユーザーメタデータを保持します。

    ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta x-oss-metadata-directive:COPY -r -f 
重要
  • cpコマンドを実行してオブジェクトのストレージクラスを変更すると、ソースオブジェクトのストレージクラスに基づいてPUTリクエストに対して課金されます。 API操作呼び出し料金は、宛先バケットの請求書に含まれています。

  • オブジェクトのストレージクラスをIA、Archive、Cold Archive、またはDeep Cold Archiveに変更し、オブジェクトが最小保存期間未満で保存された場合、最小保存期間未満で保存されたオブジェクトのストレージ使用量に対して課金されます。 詳細については、「ストレージ料金」をご参照ください。

  • cpコマンドを実行してArchive、Cold Archive、またはDeep Cold ArchiveオブジェクトのストレージクラスをStandardまたはIAに変更する前に、restoreコマンドを実行してオブジェクトを復元します。 Archiveオブジェクトのリアルタイムアクセスを有効にすると、Archiveオブジェクトを復元することなく、Archiveオブジェクトのストレージクラスを変更できます。 詳細については、「アーカイブオブジェクトのリアルタイムアクセス」をご参照ください。

  • cpコマンドを実行して100 MBを超えるオブジェクトのストレージクラスを変更すると、デフォルトでオブジェクトサイズに基づいて適切なパーツサイズが計算されます。 部品サイズが要件を満たさない場合は、-- part-sizeを使用して部品サイズを変更できます。 部品の数が10,000より少ないことを確認してください。

オブジェクトのタグの変更

-- taggingをcpコマンドに追加して、オブジェクトのタグを変更できます。 タグはアンパサンド (&) で区切ります。 例:

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/ --tagging "abc=1&bcd=2&……"

オブジェクトのタグ付けの詳細については、「object-tagging」をご参照ください。

オブジェクトのコピーと暗号化

オブジェクトをコピーするときに、オブジェクトを暗号化するサーバー側の暗号化方法を指定できます。 詳細については、「サーバー側の暗号化」をご参照ください。

  • オブジェクトをコピーし、サーバー側の暗号化方法を宛先オブジェクトのAES-256に設定します。

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket1/srcfolder2/ --meta=x-oss-server-side-encryption:AES256
  • オブジェクトをコピーし、サーバー側の暗号化方法を宛先オブジェクトのSSE-KMSに設定します。

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --meta=x-oss-server-side-encryption:KMS
    重要

    Key Management Service (KMS) を使用してオブジェクトを暗号化すると、OSSはそのオブジェクトの顧客マスターキー (CMK) をKMSに作成します。 KMS API操作が呼び出されると、少額の料金が請求されます。 詳細については、「KMSの課金」をご参照ください。

  • オブジェクトをコピーし、オブジェクトの暗号化方法を宛先オブジェクトのSSE-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 ******

バージョン管理が有効なバケット内のオブジェクトを復元する

バケットのバージョン管理を有効にすると、バケット内で上書きまたは削除されたオブジェクトは以前のバージョンとして保存されます。 cpコマンドに -- version-idを追加すると、以前のバージョンを最新バージョンで上書きできます。 例:

ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/ --version-id  CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk
重要
  • -- version-idオプションを使用するには、ls -- all-versionsコマンドを実行してオブジェクトのバージョンidを取得する必要があります。

  • -- version-idオプションは、バージョン管理が有効なバケット内のオブジェクトに対してのみ使用できます。 バケットのバージョン管理を有効にする方法の詳細については、「バケットバージョン管理」をご参照ください。

一般的なオプション

ossutilを使用して別のリージョンにあるバケットに切り替える場合は、-eオプションを追加して、バケットが配置されているリージョンのエンドポイントを指定します。 ossutilを使用して別のAlibaba Cloudアカウントに属するバケットに切り替える場合、-iオプションを追加して指定されたアカウントのAccessKey IDを指定し、-kオプションを追加して指定されたアカウントのAccessKey secretを指定します。

たとえば、次のコマンドを実行して、examplebucketという名前のソースバケットのルートディレクトリにあるsrcobject.pngオブジェクトをdestbucketという名前の宛先バケットにコピーできます。 宛先バケットは中国 (上海) リージョンにあり、別のAlibaba Cloudアカウントが所有しています。

ossutil cp oss://examplebucket/srcobject.png  oss://destbucket  -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA****  -k 67DLVBkH7EamOjy2W5RVAHUY9H****

共通オプションの詳細については、「共通オプション」をご参照ください。