cp コマンドを使用すると、同一リージョン内のソースバケットから宛先バケット、または同一バケット内の別のディレクトリにファイルをコピーできます。
注意事項
-
cp コマンドは、アカウント間またはリージョン間のファイルのコピーには対応していません。アカウント間またはリージョン間でファイルをコピーまたは移行するには、Data Online Migration を使用します。
-
このコマンドは完全なファイルのみをコピーし、ファイルの一部分のコピーには対応していません。
-
ossutil バージョン 1.6.16 以降では、コマンドラインでバイナリ名を変更せずに ossutil を使用できます。1.6.16 より前のバージョンでは、お使いのオペレーティングシステムに合わせてバイナリ名を変更する必要があります。詳細については、「コマンドラインツール ossutil コマンドリファレンス」をご参照ください。
権限
デフォルトでは、Alibaba Cloud アカウントのみがすべての API 操作を実行する権限を持っています。このコマンドを実行するには、RAM ユーザーまたは RAM ロールが、Alibaba Cloud アカウントまたは管理者から RAM ポリシーまたはバケットポリシーを通じて必要な権限を付与される必要があります。
|
API アクション |
説明 |
|
|
同一リージョン内のバケット間でのオブジェクトのコピー。 |
|
|
|
|
|
オプション。オブジェクトの特定のバージョンをコピーする場合に必要です。 |
|
|
オプション。コピー操作にオブジェクトタグ付けが含まれる場合に必要です。 |
|
|
|
|
|
オプション。コピー操作に特定のオブジェクトバージョンのタグが含まれる場合に必要です。 |
|
|
オプション。コピー操作に KMS によるサーバー側の暗号化が含まれる場合に必要です。 |
|
|
コマンド構文
ossutil cp cloud_url cloud_url [options]
次の表に、パラメーターとオプションを示します。
|
パラメーター |
説明 |
|
cloud_url |
ソースと宛先の OSS パス。形式は |
|
-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 は自動的に |
|
--encoding-type |
ファイル名のエンコーディングタイプ。値には url を指定します。このオプションを指定しない場合、ファイル名はエンコードされません。 |
|
--include |
指定された条件を満たすすべてのファイルを含めます。 |
|
--exclude |
指定された条件を満たすすべてのファイルを除外します。 |
|
--meta |
ファイルのメタデータ。形式は |
|
--acl |
ファイルのアクセス制御リスト (ACL)。有効な値:
|
|
--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 タイムスタンプ。このオプションを指定すると、この時刻より後に最終更新されたオブジェクトは無視されます。 説明
|
このコマンドの他の共通オプションの詳細については、「共通オプション」をご参照ください。
デフォルトの同時実行性がパフォーマンス要件を満たさない場合は、-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
複数ファイルの一括コピー
ファイルをコピーするとき、ソースパスがフォワードスラッシュ (/) で終わらない場合、指定されたプレフィックスに一致するすべてのファイルが宛先バケットにコピーされます。ソースパスがフォワードスラッシュ (/) で終わる場合、指定されたディレクトリ内のファイルのみが宛先バケットにコピーされます。
ソースバケット
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
指定された時間範囲内のファイルのコピー
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 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 を使用して、別のアカウントに属する中国 (上海) リージョンにあるソースバケット
バケットが配置されているリージョンのエンドポイントを指定する必要があります。詳細については、「リージョンとエンドポイント」をご参照ください。
ossutil cp oss://examplebucket/srcobject.png oss://destbucket -e oss-cn-shanghai.aliyuncs.com -i yourAccessKeyID -k yourAccessKeySecret
セキュリティのヒント:コマンドラインで AccessKey を使用すると、セキュリティリスクが生じます。自動化されたタスクや長期的なタスクの場合は、ソースアカウント用に RAM ロールを作成し、宛先アカウントにその RAM ロールを引き受ける権限を付与して、より安全なクロスアカウントアクセスを行うことを推奨します。