cpコマンドを実行すると、オブジェクトの内容を変更せずに、同じバケット内の別のディレクトリまたはソースバケットと同じリージョンにある別のバケットにオブジェクトをコピーできます。
使用上の注意
このトピックのサンプルコマンドラインは、64ビットLinuxシステムに基づいています。 他のシステムの場合は、を交換します。対応するバイナリ名を持つコマンドの /ossutil64。 詳細は、「ossutilコマンドリファレンス」をご参照ください。
cpコマンドを実行して、別のAlibaba Cloudアカウントに属するバケット、または別のリージョンにあるバケットにオブジェクトをコピーすることはできません。 別のAlibaba Cloudアカウントに属するバケットまたは別のリージョンにあるバケットにオブジェクトをコピーする場合は、ossimportまたはData Online Migrationを使用します。
cpコマンドを使用してオブジェクトをコピーできますが、パーツはコピーできません。
追加可能なオブジェクトはコピーできません。
ソースオブジェクトに対する読み取り権限と、宛先バケットに対する読み取りおよび書き込み権限が必要です。 それ以外の場合、コピー操作は失敗します。 オブジェクトをコピーする方法の詳細については、「オブジェクトのコピー」をご参照ください。
コマンド構文
. /ossutil64 cp cloud_url cloud_url
[-r, -- recursive]
[-f -- force]
[-u -- 更新]
[-- disable-無視-エラー]
[-- 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 | ソースオブジェクトと宛先オブジェクトのパス。 パスは |
-r, -- recursive | 再帰を指定します。 このオプションを指定すると、指定された条件を満たすバケット内のすべてのオブジェクトに対して操作が実行されます。 このオプションを指定しない場合、指定されたオブジェクトに対してのみ操作が実行されます。 |
-f -- 力 | 確認を必要とせずに操作を強制します。 |
-u, -- update | オブジェクトが宛先バケットに存在しない場合、またはソースオブジェクトの最終変更時刻が宛先オブジェクトの最終変更時刻よりも遅い場合にのみ、ossutilがソースオブジェクトをコピーするように指定します。 |
-- disable-無視-エラー | バッチ操作中にエラーが無視されないように指定します。 |
-- only-current-dir | 現在のディレクトリ内のオブジェクトのみをコピーするように指定します。 これらのサブディレクトリ内のサブディレクトリおよびオブジェクトはコピーされません。 |
-bigfile-threshold | 操作に再開可能なアップロードを使用するためのオブジェクトサイズのしきい値。 単位:バイト デフォルトのオブジェクトサイズのしきい値は100 MBです。 有効な値: 0 ~ 9223372036854775807 |
-- 部分サイズ | 部品サイズ。 単位:バイト デフォルトでは、ossutilはオブジェクトサイズに基づいて部品サイズを決定します。 有効な値: 1 ~ 9223372036854775807 |
-- checkpoint-dir | 再開可能アップロードタスクに関する情報が格納されるディレクトリ。 タスクが失敗すると、ossutilは自動的に |
-- encoding-type | オブジェクトの名前をエンコードするために使用されるメソッド。 このオプションを指定する場合は、値をurlに設定します。 このオプションを指定しない場合、オブジェクトの名前はエンコードされません。 |
-含める | 指定された条件を満たすすべてのオブジェクトを含みます。 |
-除外 | 指定された条件を満たすすべてのオブジェクトを除外します。 |
-メタ | オブジェクトメタデータ。 オブジェクトメタデータを |
-- acl | オブジェクトのアクセス制御リスト (ACL) 。 有効な値:
|
-- disable-crc64 | CRC-64を無効にすることを指定します。 デフォルトでは、ossutilはデータ送信中にCRC-64を有効にします。 |
-- 支払人 | リクエストの支払人。 指定したパスのリソースにアクセスするリクエスタにトラフィックとリクエスト料金を支払う場合は、このオプションをrequesterに設定します。 |
-j, -- jobs | 複数のオブジェクトで実行できる同時タスクの数。 有効な値: 1 ~ 10000 デフォルト値: 3。 |
-- 平行 | 1つのオブジェクトに対して実行できる同時タスクの数。 有効な値: 1 ~ 10000 このオプションを設定しない場合、ossutilは操作タイプとオブジェクトサイズに基づいて値を指定します。 |
-- version-id | コピーするオブジェクトのバージョンID。 このオプションは、バージョン管理が有効になっているバケット内のオブジェクトに対してのみ指定できます。 |
-- 開始時間 | 最後に変更された時間によってオブジェクトをフィルタリングする時間範囲の開始。 この値は UNIX タイムスタンプです。 最終変更時刻がUNIXタイムスタンプより前のオブジェクトは無視されます。 説明 ossutil V1.7.18以降のみがこのパラメータをサポートしています。 ossutilの更新方法の詳細については、「update」をご参照ください。 |
-終了時間 | 最後に変更された時間によってオブジェクトをフィルタリングする時間範囲の終わり。 この値は UNIX タイムスタンプです。 最後に変更された時刻がタイムスタンプより後のオブジェクトは無視されます。 説明
|
デフォルトの同時実行値がパフォーマンス要件を満たさない場合は、-j、-- jobs、-- parallelオプションを使用してパフォーマンスを調整できます。 デフォルトでは、ossutilはオブジェクトサイズに基づいて -- parallelの値を計算します。 複数のラージオブジェクトをコピーする場合、同時実行タスクの実際の数は、-j, -- jobsの値に -- parallelの値を掛けて計算されます。
Elastic Compute Service (ECS) インスタンスまたはサーバーのネットワーク帯域幅、メモリ、CPUなどのリソースが制限されている場合は、同時タスクの数を100未満の値に調整することを推奨します。 ネットワーク帯域幅、メモリ、CPUなどのリソースがアイドル状態のままである場合、同時実行タスクの数を増やすことができます。
同時実行タスクの数が多すぎると、スレッドがリソースを切り替えて競合するため、ossutilのコピー操作のパフォーマンスが低下する可能性があります。 さらに、EOF (end-of-file) エラーが発生することがある。 これらの問題を防ぐために、使用可能なリソースに基づいて -j、-- jobs、-- parallelの値を調整できます。 ストレステストを実行するには、最初にオプションに小さな値を指定し、値を徐々に増やして最適な値を見つけることをお勧めします。
サンプル環境
このトピックでは、オブジェクトは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
スラッシュ (/) で終わらないパスからオブジェクトをコピーする
. /ossutil64 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
スラッシュ (/) で終わるパスからオブジェクトをコピーする
. /ossutil64 cp oss:// examplebucket1/srcfolder1/ oss:// examplebucket2 -r
次のオブジェクトは、ソースバケットからexamplebucket2という名前の宛先バケットにコピーされます。
exampleobject1.txt exampleobject2.png dir1 / dir1/exampleobject3.jpg dir2 / dir2/exampleobject4.jpg
簡単なコピーを実行する
単一のオブジェクトをコピーする
. /ossutil64 cp oss:// examplebucket1/examplefile.txt oss:// examplebucket1/srcfolder2/
増分オブジェクトのコピー
複数のオブジェクトをコピーするときに -- updateオプションを指定した場合、ossutilは、宛先オブジェクトが存在しない場合、またはソースオブジェクトの最終変更時刻が宛先オブジェクトの最終変更時刻よりも遅い場合にのみ、オブジェクトをコピーします。 次のコマンドを実行して、増分オブジェクトをコピーできます。
. /ossutil64 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コピーします。
. /ossutil64 cp -r oss:// examplebucket1/srcfolder1/ oss:// examplebucket2/path2/ -- 開始時間1698718158 -- 終了時間1698728158
オブジェクトの名前変更
. /ossutil64 cp oss:// examplebucket1/examplefile.txt oss:// examplebucket1/example.txt
cpコマンドを実行してオブジェクトの名前を変更すると、元のオブジェクトは引き続き存在します。 オブジェクトの名前を変更した後、元のオブジェクトを削除できます。
現在のディレクトリ内のオブジェクトのみをコピーし、サブディレクトリを無視する
. /ossutil64 cp oss:// examplebucket1/srcfolder1/ oss:// examplebucket1/srcfolder2/ -- only-current-dir -r
オブジェクトのメタデータの変更
オブジェクトをコピーするときは、-- metaオプションを使用してオブジェクトのメタデータを変更できます。 このオプションの値は、
header:value#header:value...
形式です。. /ossutil64 cp oss:// examplebucket1/examplefile.txt oss:// examplebucket1/ -- meta=Cache-コントロール: no-cache
pay-by-requesterが有効になっているバケットからpay-by-requesterが無効になっているバケットにオブジェクトをコピーします。
. /ossutil64 cp oss:// examplebucket1/examplefile.txt oss:// examplebucket2/desfolder/ -- payer=requester
特定の条件を満たす複数のオブジェクトをコピーする
特定の条件を満たすオブジェクトをコピーするには、-- includeと -- excludeを指定します。
JPG形式でないすべてのオブジェクトをコピーする
. /ossutil64 cp oss:// examplebucket1/srcfolder1/ oss:// examplebucket2/desfolder/ -exclude "*.jpg" -r
名前にabcを含み、JPGまたはTXT形式ではないすべてのオブジェクトをコピーします。
. /ossutil64 cp oss:// examplebucket1/srcfolder1/ oss:// examplebucket2/desfolder/ -include "* abc *"-exclude "*.jpg"-exclude "*.txt" -r
オブジェクトのストレージクラスの変更
あなたが 上書き -- metaオプションを指定して、オブジェクトのストレージクラスを変更できます。 有効な値:
スタンダード: スタンダード
IA: まれなアクセス (IA)
アーカイブ: Archive
ColdArchive: コールドアーカイブ
DeepColdArchive: ディープコールドアーカイブ
ストレージクラスの詳細については、「概要」をご参照ください。
-- metaオプションを使用してオブジェクトのストレージクラスを変更すると、オブジェクトの既存のユーザーメタデータがデフォルトで上書きされます。 ストレージクラスを変更し、オブジェクトの既存のユーザーメタデータを保持する場合は、x-oss-metadata-directive:COPY
オプションを含める必要があります。
オブジェクトの既存のユーザーメタデータの上書き
オブジェクトのストレージクラスをアーカイブに変更する
. /ossutil64 cp oss:// examplebucket1/srcfolder1/examplefile.txt oss:// examplebucket1/srcfolder1/examplefile.txt -- meta X-oss-Storage-Class: アーカイブ
特定のディレクトリ内のすべてのオブジェクトのストレージクラスを標準
. /ossutil64 cp oss:// examplebucket1/srcfolder1/ oss:// examplebucket1/srcfolder1/ -- meta X-oss-Storage-Class:Standard -r
オブジェクトの既存のユーザーメタデータを保持する
次のコマンドを実行して、特定のオブジェクトのストレージクラスをIAに変更し、オブジェクトの既存のユーザーメタデータを保持します。
. /ossutil64 cp oss:// examplebucket1/srcfolder1/examplefile.txt oss:// examplebucket1/srcfolder1/examplefile.txt -- meta X-oss-Storage-Class:IA#x-oss-metadata-directive:COPY
次のコマンドを実行して、特定のディレクトリ内のすべてのオブジェクトのストレージクラスをStandardに変更し、オブジェクトの既存のユーザーメタデータを保持します。
. /ossutil64 cp oss:// examplebucket1/srcfolder1/ oss:// examplebucket1/srcfolder1/ -- meta X-oss-Storage-Class:Standard#x-oss-metadata-directive:COPY -r -f
cpコマンドを実行してArchive、Cold Archive、またはDeep Cold ArchiveオブジェクトのストレージクラスをStandardまたはIAに変更する前に、restoreコマンドを実行してオブジェクトを復元します。 Archiveオブジェクトのリアルタイムアクセスを有効にすると、Archiveオブジェクトを復元することなく、Archiveオブジェクトのストレージクラスを変更できます。 詳細については、「アーカイブオブジェクトのリアルタイムアクセス」をご参照ください。
オブジェクトのストレージクラスをIA、Archive、Cold Archive、またはDeep Cold Archiveに変更し、オブジェクトが最小ストレージ期間未満で保存されている場合、最小ストレージ期間全体に基づいて課金されます。 詳細については、「ストレージ料金」をご参照ください。
cpコマンドを実行して100 MBを超えるオブジェクトのストレージクラスを変更すると、デフォルトでオブジェクトサイズに基づいて適切なパーツサイズが計算されます。 部品サイズが要件を満たさない場合は、-- part-sizeを使用して部品サイズを変更できます。 部品の数が10,000より少ないことを確認してください。
オブジェクトのタグの変更
-- taggingをcpコマンドに追加して、オブジェクトのタグを変更できます。 タグはアンパサンド (&) で区切ります。 次のコマンドを実行して、オブジェクトのタグを変更できます。
. /ossutil64 cp oss:// examplebucket1/examplefile.txt oss:// examplebucket1/ -- tagging "abc=1&bcd=2&……"
オブジェクトタグ付けの詳細については、「オブジェクトタグ付け (オブジェクトタグの追加、変更、クエリ、および削除) 」をご参照ください。
オブジェクトのコピーと暗号化
オブジェクトをコピーするときに、サーバー側の暗号化方法を指定してオブジェクトを暗号化し、暗号化されたオブジェクトをバケットに格納できます。 詳細については、「サーバー側の暗号化」をご参照ください。
オブジェクトをコピーし、宛先オブジェクトのAES-256暗号化を指定する
. /ossutil64 cp oss:// examplebucket1/examplefile.txt oss:// examplebucket1/srcfolder2/ -- meta=x-oss-server-side-encryption:AES256
オブジェクトをコピーし、宛先オブジェクトのSSE-KMS暗号化を指定する
. /ossutil64 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の課金」をご参照ください。
オブジェクトをコピーし、宛先オブジェクトの特定のCMKでSSE-KMS暗号化を指定する
. /ossutil64 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を追加すると、以前のバージョンのオブジェクトを最新バージョンにすることができます。 サンプルコマンド:
. /ossutil64 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シークレットを指定します。
たとえば、次のコマンドを実行して、examplebucketという名前のソースバケットのルートディレクトリにあるsrcobject.pngオブジェクトをdestbucketという名前のターゲットバケットにコピーできます。 ソースバケットは中国 (上海) リージョンにあり、別のAlibaba Cloudアカウントが所有しています。
. /ossutil64 cp oss:// examplebucket/srcobject.png oss:// destbucket -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA **** -k 67DLVBkH7EamOjy2W5RVAHUY9H ****
共通オプションの詳細については、「共通オプション」をご参照ください。