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

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

最終更新日:Aug 14, 2026

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

注意事項

  • cp コマンドは、クロスアカウントまたはクロスリージョンでのファイルのコピーはサポートされていません。クロスアカウントまたはクロスリージョンでファイルをコピーまたは移行するには、Data Online Migration を使用してください。

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

  • 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 以降でサポートされています。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

単一ファイルのコピー

同じバケット内のあるディレクトリから別のディレクトリへファイルをコピーし、ファイル名を 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+8) から 2023 年 10 月 31 日 12:55:58 (UTC+8) の間に最終更新された 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

ファイルのコピーとストレージクラスの変更

オブジェクトを上書き する際、--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******
説明

--meta オプションは ossutil 1.x で使用します。ossutil 2.x の場合は、代わりに次のコマンドを使用してください:

ossutil api copy-object --server-side-encryption SM4

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

バケットのバージョニングを有効にすると、上書きまたは削除されたオブジェクトは履歴バージョンとして保存されます。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 共通オプションを使用して、別の 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 ロールを引き受ける権限を付与して、より安全なクロスアカウントアクセスを実現することを推奨します。