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

Object Storage Service:cp コマンドを使用したオブジェクトのコピー

最終更新日:Nov 07, 2025

cp コマンドを使用して、同じリージョン内のソースバケットから宛先バケットに、または同じバケット内の別のディレクトリにファイルをコピーします。

注意事項

  • cp コマンドは、アカウントまたはリージョンをまたいだファイルのコピーをサポートしていません。アカウントまたはリージョンをまたいでファイルをコピーまたは移行するには、「データオンライン移行」をご参照ください。

  • このコマンドは完全なファイルのみをコピーし、ファイルの一部のコピーはサポートしていません。

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

    権限

    デフォルトでは、Alibaba Cloud アカウントのみがすべての 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 に設定します。このオプションを指定しない場合、ファイル名はエンコードされません。

    --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

    データの 64 ビット巡回冗長検査 (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 以降のみがこのパラメーターをサポートします。アップグレードの詳細については、「update (ossutil のアップグレード)」をご参照ください。

    --end-time

    UNIX タイムスタンプ。このオプションを指定すると、この時刻より後に最終更新されたオブジェクトは無視されます。

    説明
    • `start-time` と `end-time` の両方を指定した場合、コピーコマンドは指定された開始時刻と終了時刻の間に最終変更されたファイルに対してのみ実行されます。

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

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

    デフォルトの同時実行性がパフォーマンス要件を満たさない場合は、-j, --jobs および --parallel オプションを調整してパフォーマンスを調整できます。デフォルトでは、ossutil はファイルサイズに基づいて `parallel` の値を計算します。大きなファイルを一括で転送する場合、実際の同時実行性は `jobs` の値 × `parallel` の値になります。

    • コマンドを実行する ECS インスタンスまたはサーバーのネットワーク、メモリ、CPU などのリソースが限られている場合は、同時実行性を 100 未満の値に下げることをお勧めします。リソースが完全に使用されていない場合は、必要に応じて同時実行性を上げることができます。

    • 高い同時実行性は、スレッドの切り替えオーバーヘッドやリソースの競合により、パフォーマンスを低下させたり、EOF エラーを引き起こしたりする可能性があります。マシンの実際のリソースに基づいて -j, --jobs および --parallel オプションを調整してください。ストレステストを実行する場合は、低い同時実行性から始めて徐々に上げていき、最適な値を見つけることをお勧めします。

    使用例

    以下の例は Linux システム用です。お使いのオペレーティングシステムと実際の環境に基づいてパラメーターを変更してください。例では、次の環境を想定しています:

    • ソースバケット: examplebucket1

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

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

    • 宛先バケット: examplebucket2

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

    単一ファイルのコピー

    同じバケット内のあるディレクトリから別のディレクトリにファイルをコピーし、ファイル名を 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

    指定された時間範囲内のファイルのコピー

    2023 年 10 月 31 日 10:09:18 (UTC+08:00) から 2023 年 10 月 31 日 12:55:58 (UTC+08:00) の間に最終更新された `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

    ファイルのコピーとリクエスト元支払いモードの指定

    ソースバケットから宛先バケットにファイルをコピーし、リクエスト元支払いモードを指定します。ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/desfolder/ --payer=requester

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

    ファイルのコピーとストレージタイプの変更

    オブジェクトを上書き するときに、--meta オプションを追加してストレージタイプを変更できます。サポートされているストレージタイプは次のとおりです:

    • Standard: 標準ストレージ

    • IA: 低頻度アクセス

    • Archive: アーカイブストレージ

    • ColdArchive: コールドアーカイブ

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

    ストレージタイプの詳細については、「ストレージタイプ」をご参照ください。

    重要

    デフォルトでは、--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

    既存のカスタムオブジェクトメタデータの保持

    • 既存の単一ファイルのメタデータを保持します。

      ossutil cp oss://examplebucket1/srcfolder1/examplefile.txt oss://examplebucket1/srcfolder1/examplefile.txt --meta x-oss-metadata-directive:COPY
    • 複数の既存ファイルのメタデータを保持します。

      ossutil cp oss://examplebucket1/srcfolder1/ oss://examplebucket1/srcfolder1/ --meta x-oss-metadata-directive:COPY -r -f 
    重要
    • 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******

    ファイルの履歴バージョンの復元

    バケットのバージョン管理を有効にすると、上書きおよび削除されたオブジェクトは履歴バージョンとして保存されます。cp コマンドに --version-id オプションを追加して履歴バージョンを復元し、現在のバージョンを上書きできます。

    まず、ls --all-versions コマンドを使用してオブジェクトのすべてのバージョン ID を取得します。次に、--version-id オプションを使用して特定のバージョンをコピーします。

    説明

    --version-id オプションは、バージョン管理が有効になっているバケットでのみ使用できます。バケットのバージョン管理を有効にするコマンドの詳細については、「bucket-versioning (バージョン管理)」をご参照ください。

    ossutil cp oss://examplebucket1/examplefile.txt oss://examplebucket2/ --version-id  CAEQARiBgID8rumR2hYiIGUyOTAyZGY2MzU5MjQ5ZjlhYzQzZjNlYTAyZDE3MDRk

    クロスアカウントコピー

    -e-i、および -k 共通オプションを使用して、別のアカウントに属する中国 (上海) リージョンのソースバケット `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 ロールを偽装する権限を付与して、より安全なクロスアカウントアクセスを行うことをお勧めします。