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
複数ファイルのバッチコピー
ファイルをコピーする際、ソースパスがスラッシュ (/) で終わっていない場合、指定されたプレフィックスに一致するすべてのファイルが宛先バケットにコピーされます。ソースパスがスラッシュ (/) で終わっている場合、指定されたディレクトリ内のファイルのみが宛先バケットにコピーされます。
ソースバケット 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 ロールを引き受ける権限を付与して、より安全なクロスアカウントアクセスを実現することを推奨します。