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

Object Storage Service:cp (copy objects)

最終更新日:Mar 31, 2026

cp コマンドを使用すると、同一リージョン内のソースバケットから宛先バケットへオブジェクトをコピーするか、または同一バケット内の別のディレクトリへコピーできます。

注意事項

  • cp コマンドは、クロスアカウントおよびクロスリージョンでのコピー操作をサポートしていません。アカウント間またはリージョン間でオブジェクトをコピーまたは移行するには、データオンライン移行 を使用してください。

  • このコマンドでは、完全なオブジェクトのみがコピーされます。マルチパートアップロードの未完了部分をコピーすることはできません。

  • ossutil 1.6.16 以降では、バイナリ名として ossutil をそのまま使用でき、名称変更は不要です。それ以前のバージョンでは、オペレーティングシステムに応じてバイナリ名を変更する必要があります。 詳細については、「ossutil の使い始め」をご参照ください。

    権限

    デフォルトでは、Alibaba Cloud アカウント (root ユーザー) のみがすべての API オペレーションを実行する権限を持ちます。このコマンドを実行するには、RAM ユーザーまたは RAM ロールに対して、Alibaba Cloud アカウントまたは管理者が RAM ポリシー または バケットポリシー を介して必要な権限を付与する必要があります。

    API アクション

    説明

    oss:GetObject

    同一バケット内、または同一リージョン内の異なるバケット間でオブジェクトをコピーします。

    oss:PutObject

    oss:GetObjectVersion

    任意指定。特定のバージョンのオブジェクトをコピーする場合に必要です。

    oss:GetObjectTagging

    任意指定。コピー操作にオブジェクトタグ付けが関係する場合に必要です。

    oss:PutObjectTagging

    oss:GetObjectVersionTagging

    任意指定。コピー操作に特定のオブジェクトバージョンのタグが関係する場合に必要です。

    kms:GenerateDataKey

    任意指定。KMS を使用したサーバ側暗号化を伴うコピー操作の場合に必要です。

    kms:Decrypt

    コマンド構文

    ossutil cp cloud_url cloud_url [options]

    以下の表に、パラメーターおよびオプションについて説明します。

    パラメーター

    説明

    cloud_url

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

    -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 は自動的に .ossutil_checkpoint という名前のディレクトリを作成してチェックポイント情報を記録します。このディレクトリは、再開可能なコピーが成功した後に削除されます。このオプションを指定する場合は、指定したディレクトリが削除可能であることを確認してください。

    --encoding-type

    オブジェクト名を URL エンコーディングする場合は、url を指定します。このオプションを指定しない場合、オブジェクト名はエンコーディングされません。

    --include

    指定したパターンに一致するすべてのオブジェクトを含めます。

    --exclude

    指定したパターンに一致するすべてのオブジェクトを除外します。

    --meta

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

    --acl

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

    • default (デフォルト):オブジェクトはバケットの ACL を継承します。

    • private:バケット所有者のみがオブジェクトに対して読み取りおよび書き込み権限を持ちます。他のユーザーはオブジェクトにアクセスできません。

    • public-read:バケット所有者のみがオブジェクトに対して書き込み権限を持ちます。その他のすべてのユーザー(匿名ユーザーを含む)は読み取り専用権限を持ちます。これによりデータ漏えいや予期しない課金が発生する可能性があります。悪意のあるユーザーが不正な情報を書き込んだ場合、法的責任を負う可能性があります。必要でない限り、この権限の付与は推奨しません。

    • public-read-write:すべてのユーザー(匿名ユーザーを含む)がオブジェクトに対して読み取りおよび書き込み権限を持ちます。これによりデータ漏えいや予期しない課金が発生する可能性があります。この権限は慎重に使用してください。

    --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 タイムスタンプ。指定した場合、この時刻より後に最終更新されたオブジェクトは無視されます。

    説明
    • --start-time と --end-time の両方を指定した場合、指定された開始時刻と終了時刻の間に最終更新されたオブジェクトのみがコピーされます。

    • このパラメーターは ossutil 1.7.18 以降でのみサポートされています。ossutil のアップグレード方法については、「update (ossutil のアップグレード)」をご参照ください。

    このコマンドのその他の共通オプションについては、「共通オプション」をご参照ください。

    デフォルトの同時実行数がパフォーマンス要件を満たさない場合は、-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-cache

    Requester 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 ロールを引き受ける権限を付与することで、より安全なクロスアカウントアクセスを実現することを推奨します。