cp コマンドを使用して、同じリージョン内のソースバケットから宛先バケットに、または同じバケット内の別のディレクトリにファイルをコピーします。
注意事項
cp コマンドは、アカウントまたはリージョンをまたいだファイルのコピーをサポートしていません。アカウントまたはリージョンをまたいでファイルをコピーまたは移行するには、「データオンライン移行」をご参照ください。
このコマンドは完全なファイルのみをコピーし、ファイルの一部のコピーはサポートしていません。
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 複数のファイルを一括でコピーする
ファイルをコピーするとき、ソースパスがスラッシュ (/) で終わらない場合、指定されたプレフィックスに一致するすべてのファイルが宛先バケットにコピーされます。ソースパスがスラッシュ (/) で終わる場合、指定されたディレクトリ内のファイルのみが宛先バケットにコピーされます。
ソースバケット `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 ロールを偽装する権限を付与して、より安全なクロスアカウントアクセスを行うことをお勧めします。