cpコマンドを実行して、ローカルファイル、画像、ビデオなどのリソースをObject Storage Service (OSS) にアップロードできます。 このコマンドは、大きなファイルのアップロードに適しています。 コマンドに -- includeおよび -- excludeオプションを含めて、指定した条件を満たすファイルを一括アップロードすることもできます。
使用上の注意
ローカルファイルをOSSにアップロードするには、
oss:PutObject
権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。このトピックでは、64ビットLinuxシステムに基づくサンプルコマンドラインを提供します。 他のシステムのために、取り替えて下さい./ossutil64対応するバイナリ名を持つコマンドで 詳細は、「ossutilコマンドリファレンス」をご参照ください。
cpコマンドを実行してローカルファイルをアップロードすると、ossutilはファイルサイズに基づいてアップロード方法を自動的に選択します。
アップロードするローカルファイルのサイズが再開可能なアップロードタスクを実行するためのしきい値より小さい場合、ossutilは単純アップロードを使用します。 しきい値は
-- bigfile-threshold
オプションで指定され、デフォルトのサイズは100 MBです。アップロードするローカルファイルのサイズが、再開可能なアップロードタスクを実行するためのしきい値以上の場合、ossutilは再開可能なアップロードを使用します。
アップロードタスクが中断された場合、アップロードされたデータは部品としてOSSバケットに保存されます。 アップロードされたパーツが不要になった場合は、追加のストレージコストを回避するために、次のいずれかの方法で削除することを推奨します。
手動でパーツを削除します。 詳細は、「rm」をご参照ください。
部品を自動的に削除するライフサイクルルールを設定します。 詳細については、「ライフサイクルルールの設定」をご参照ください。
コマンド構文
./ossutil64 cp file_url cloud_url
[-r, --recursive]
[-f --force]
[-u --update]
[--maxupspeed <value>]
[--enable-symlink-dir]
[--disable-all-symlink]
[--disable-ignore-error]
[--only-current-dir]
[--bigfile-threshold <value>]
[--part-size <value>]
[--checkpoint-dir <value>]
[--encoding-type <value>]
[--include <value>]
[--exclude <value>]
[--meta <value>]
[--acl <value>]
[--snapshot-path <value>]
[--disable-crc64]
[--disable-dir-object]
[--payer <value>]
[--tagging <value>]
[-j, --job <value>]
[--parallel <value>]
[--start-time <value>]
[--end-time <value>]
次の表に、コマンド構文のパラメーターとオプションを示します。
パラメータ /オプション | 説明 |
ファイル_url | ローカルファイルのパス。 例: Linuxの場合は |
cloud_url | アップロードされたローカルファイルを保存するパス。 形式: |
-r, -- recursive | 再帰操作。 このオプションを指定すると、指定された条件を満たすバケット内のすべてのオブジェクトに対して操作が実行されます。 このオプションを指定しない場合、指定されたオブジェクトに対してのみ操作が実行されます。 |
-f -- 力 | 確認のプロンプトなしで操作を強制的に実行するように指定します。 |
-u, -- update | 移行先オブジェクトが存在しない場合、またはファイルの最終変更時刻が移行先オブジェクトの最終変更時刻よりも遅い場合にのみ、ossutilがファイルをアップロードするように指定します。 |
-- maxupspeed | 最大アップロード速度。 単位: KB/s。 デフォルト値:0 値0は、アップロード速度が制限されないことを指定します。 |
-- enable-symlink-dir | シンボリックリンクが指すディレクトリ内のサブディレクトリをアップロードすることを指定します。 デフォルトでは、シンボリックリンクが指すディレクトリ内のサブディレクトリはアップロードされません。 |
-- disable-all-symlink | シンボリックリンクが指すディレクトリ内のサブディレクトリとオブジェクトを無視することを指定します。 |
-- disable-無視-エラー | バッチ操作中にエラーが無視されないように指定します。 |
-- only-current-dir | ossutilが現在のディレクトリ内のオブジェクトのみをアップロードすることを指定します。 このディレクトリ内のサブディレクトリおよびサブディレクトリ内のオブジェクトは無視されます。 |
-- bigfile-threshold | 再開可能なアップロードタスクを実行するためのしきい値。 オブジェクトサイズがしきい値を超える場合、再開可能なアップロードが使用されます。 単位:バイト デフォルト値: 100 MB。 有効な値: 0 ~ 9223372036854775807 |
-- 部分サイズ | 部品サイズ。 単位:バイト デフォルトでは、ossutilはオブジェクトサイズに基づいて部品サイズを決定します。 有効な値: 1 ~ 9223372036854775807 |
-- checkpoint-dir | 再開可能アップロードタスクに関する情報が格納されているディレクトリ。 タスクが失敗すると、ossutilは自動的にという名前のディレクトリを作成します。 |
-- encoding-type | オブジェクトの名前をエンコードするために使用されるメソッド。 値をurlに設定します。 このオプションを指定しない場合、オブジェクトの名前はエンコードされません。 |
-含める | 指定された条件を満たすすべてのオブジェクトが一致することを指定します。 構文と例の詳細については、「指定された条件を満たすオブジェクトの一括アップロード」をご参照ください。 |
-除外 | 指定された条件を満たさないすべてのオブジェクトが一致することを指定します。 構文と例の詳細については、「指定された条件を満たすオブジェクトの一括アップロード」をご参照ください。 |
-メタ | オブジェクトメタデータ。 オブジェクトメタデータには、標準HTTPヘッダーとユーザーメタデータが含まれます。 ユーザーメタデータは |
-- acl | オブジェクトのアクセス制御リスト (ACL) 。 有効な値:
|
-- snapshot-path | アップロードされたオブジェクトのスナップショットが保存されるディレクトリ。 後続のアップロードタスクで、ossutilは指定されたディレクトリからスナップショット情報を読み取り、増分アップロードを実行します。 |
-- disable-crc64 | CRC-64を無効にすることを指定します。 デフォルトでは、ossutilはデータ送信中にCRC-64を有効にします。 |
-- disable-dir-object | オブジェクトのアップロード中にディレクトリに対してOSSオブジェクトが生成されないことを指定します。 |
-- 支払人 | トラフィックとリクエスト料金の支払人。 指定したパスのリソースにアクセスするリクエスタにトラフィックとリクエストの料金を支払う場合は、このオプションをrequesterに設定します。 |
-- タグ付け | オブジェクトのタグ。 形式: |
-j, -- jobs | 複数のオブジェクトで実行できる同時タスクの数。 有効な値: 1 ~ 10000 デフォルト値: 3。 |
-- 平行 | 1つのオブジェクトに対して実行できる同時タスクの数。 有効な値: 1 ~ 10000 このオプションを指定しない場合、ossutilは操作タイプとオブジェクトサイズに基づいて値を指定します。 |
-- 開始時間 | 最後に変更された時刻までにオブジェクトをフィルタリングする時間範囲の開始。 値は、UNIXの時刻形式に続くタイムスタンプです。 最終変更時刻がUNIXタイムスタンプより前のオブジェクトは無視されます。 説明 ossutil V1.7.18以降のみがこのパラメータをサポートしています。 ossutilの更新方法の詳細については、「update」をご参照ください。 |
-終了時間 | 最後に変更された時刻までにオブジェクトをフィルタリングする時間範囲の終わり。 値は、UNIXの時刻形式に続くタイムスタンプです。 最終変更時刻がUNIXタイムスタンプより後のオブジェクトは無視されます。 説明
|
既定の同時タスク数がパフォーマンス要件を満たしていない場合は、前述のコマンド構文の -j、-- jobs、-- parallelオプションを使用してアップロードのパフォーマンスを調整できます。 デフォルトでは、ossutilはオブジェクトサイズに基づいて -- parallelの値を計算します。 ラージオブジェクトをバッチアップロードする場合、実際の同時実行値は、-- jobs値と -- parallel値を乗算することによって計算されます。
ECSインスタンスまたはサーバーのネットワーク帯域幅、メモリ、CPUなどのリソースが制限されている場合は、同時実行値を100未満の値に調整することを推奨します。 ネットワーク帯域幅、メモリ、CPUなどのリソースがアイドル状態のままである場合、同時実行タスクの数を増やすことができます。
同時タスクの数が多すぎると、スレッドがリソースを切り替えて競合するため、ossutilのアップロードのパフォーマンスが低下する可能性があります。 さらに、EOF (end-of-file) エラーが発生することがある。 これらの問題を防ぐために、使用可能なリソースに基づいて -j、-- jobs、-- parallelの値を調整できます。 ストレステストを実行するには、2つのオプションに小さな値を指定してから、最適な値に増分します。
サンプル環境
このトピックでは、ローカルファイルまたはディレクトリがLinux OSからOSSにアップロードされます。 OSと環境に基づいて、例のオプションを変更できます。 例では、次のリソースが使用されます。
ローカルファイル: examplefile.txt (ルートディレクトリ内のファイル)
ローカルディレクトリ: localfolder (ルートディレクトリ内のサブディレクトリ)
宛先バケット: examplebucket
宛先バケットのディレクトリ: desfolder
簡易アップロード
ローカルファイル、画像、ビデオなどのリソースをOSSにアップロードする場合は、ossutilを使用できます。 次のサンプルコマンドは、ossutilを使用してデータをOSSにアップロードする方法の例を示しています。
単一のローカルファイルをアップロードする
デフォルトでは、オブジェクト名を指定しない場合、OSSはローカルファイルの名前をオブジェクト名として使用します。 オブジェクト名を指定した場合、OSSはオブジェクトの名前を使用します。
./ossutil64 cp examplefile.txt oss:// examplebucket/desfolder /
ローカルディレクトリからファイルをアップロードする
cpコマンドに -rオプションを追加して、ローカルディレクトリから指定したパスにファイルをアップロードします。
./ossutil64 cp -r localfolder/ oss:// examplebucket/desfolder /
最終変更時刻が指定した時間範囲内であるファイルをローカルディレクトリからアップロードする
次のコマンドを実行して、最終変更時刻が10月31日10:09:18 (UTC + 8) から2023日12:55:58 (UTC + 8) の範囲内であるファイルをローカルディレクトリから指定されたOSSパスにアップロードします。
./ossutil64 cp -r localfolder/ oss:// examplebucket/desfolder/ -- start-time 1698718158 -- end-time 1698728158
ローカルディレクトリとディレクトリ内のファイルをアップロードする
cpコマンドに -rオプションを追加し、OSSパスにローカルディレクトリの名前を含めて、ローカルディレクトリとディレクトリ内のファイルを指定されたOSSパスにアップロードします。 指定されたディレクトリに対して、OSSはディレクトリオブジェクトを作成しません。 指定されたディレクトリ内のサブディレクトリに対して、名前がスラッシュ (/) で終わるゼロバイトのオブジェクトが作成されます。 ローカルディレクトリのディレクトリオブジェクトを作成する場合は、mkdirコマンドを実行します。
./ossutil64 cp -r localfolder/ oss:// examplebucket/desfolder/localfolder /
単一のファイルをアップロードし、-- metaを指定します。
cpコマンドを実行してファイルをアップロードするときに、-- metaオプションを使用して、
header:value#header:value...
形式でオブジェクトメタデータを指定します。./ossutil64 cp examplefile.txt oss://examplebucket/desfolder/examplefile.txt --meta=Cache-Control:no-cache#Content-Encoding:gzip
ディレクトリをアップロードして既存のオブジェクトをスキップする
失敗したバッチアップロードタスクを再開するときに、-- update (略して -u) オプションを指定して、アップロードされたオブジェクトをスキップし、増分アップロードを実行できます。 例:
./ossutil64 cp -r localfolder/ oss:// examplebucket/desfolder/ -u
pay-by-requesterが有効になっているバケットにファイルをアップロードする
./ossutil64 cp localfolder/examplefile.txt oss:// examplebucket/ -- payer=requester
現在のディレクトリのファイルのみをアップロードし、サブディレクトリを無視する
./ossutil64 cp localfolder/ oss:// examplebucket/desfolder/ -- only-current-dir -r
アップロードされたディレクトリのオブジェクトを生成せずにディレクトリをアップロードする
OSSでは、ディレクトリは名前がスラッシュ (/) で終わるゼロバイトのオブジェクトです。 cpコマンドで -- disable-dir-objectオプションを指定してディレクトリをアップロードした場合、OSSはディレクトリのオブジェクトを生成しません。 ただし、OSSコンソールでディレクトリを表示できます。 ディレクトリ内のすべてのオブジェクトを削除すると、ディレクトリも削除されます。
./ossutil64 cp localfolder/ oss:// examplebucket/desfolder/ -- disable-dir-object -r
シンボリックリンクが指すサブディレクトリ内のオブジェクトをアップロードする
./ossutil64 cp localfolder/ oss:// examplebucket/desfolder/ -- enable-symlink-dir -r
アップロード時にシンボリックリンクが指すサブディレクトリとこのサブディレクトリ内のすべてのオブジェクトを無視する
./ossutil64 cp localfolder/ oss:// examplebucket/desfolder/ -r -- disable-all-symlink
最大アップロード速度の設定
オブジェクトをアップロードするときに、-- maxupspeedを設定して最大アップロード速度を指定できます。 単位: KB/s。 例:
オブジェクトをOSSにアップロードし、最大アップロード速度を1メガバイト/秒に設定する
./ossutil64 cp examplefile.txt oss:// examplebucket/desfolder/ -- maxupspeed 1024
ディレクトリをOSSにアップロードし、最大アップロード速度を1メガバイト/秒に設定します
./ossutil64 cp -r localfolder/ oss:// examplebucket/desfolder/ -- maxupspeed 1024
オブジェクトのアップロードとオブジェクトのタグの設定
cpコマンドを実行してオブジェクトをアップロードするときに、-- taggingオプションを指定してオブジェクトのタグを設定できます。 オブジェクトに複数のタグを設定する場合は、アンパサンド (&) で区切ります。 例:
./ossutil64 cp examplefile.txt oss:// examplebucket/desfolder/ -- tagging "abc=1&bcd=2&…"
詳細については、「object-tagging」をご参照ください。
オブジェクトをアップロードし、オブジェクトのストレージクラスを指定します。
cpコマンドを実行してローカルファイルをアップロードするときに、-- metaオプションを指定して、オブジェクトのストレージクラスを指定できます。 ossutilは、次のストレージクラスをサポートします。
標準
IA
アーカイブ
ColdArchive
DeepColdArchive
コマンドでオブジェクトのストレージクラスを指定しない場合、OSSはバケットのストレージクラスをオブジェクトに適用します。 詳細については、「概要」をご参照ください。
例:
オブジェクトをアップロードし、オブジェクトのストレージクラスをIAに設定します。
./ossutil64 cp examplefile.txt oss:// examplebucket/desfolder/ -- meta X-oss-Storage-Class:IA
ディレクトリをアップロードし、ディレクトリ内のすべてのオブジェクトのストレージクラスを標準
./ossutil64 cp localfolder/ oss:// examplebucket/desfolder/ -- meta X-oss-Storage-Class:Standard -r
オブジェクトをアップロードし、オブジェクトのACLを指定する
cpコマンドを実行してオブジェクトをアップロードするときに、-- aclオプションを設定してオブジェクトのACLを指定できます。 ossutilは次のACLをサポートしています。
default
非公開
公開読み取り
公開読み取り/書き込み
例:
オブジェクトをアップロードし、オブジェクトのACLをprivateに設定します。
./ossutil64 cp examplefile.txt oss:// examplebucket/desfolder/ -- acl private
オブジェクトをアップロードし、オブジェクトのACLをpublic-readに設定します。
./ossutil64 cp localfolder/ oss:// examplebucket/desfolder/ -- acl public-read -r
オブジェクトをアップロードし、オブジェクトの暗号化方法を指定する
オブジェクトをアップロードするときに、オブジェクトのサーバー側の暗号化方法を指定できます。 オブジェクトが暗号化された後、オブジェクトは指定されたバケットに格納されます。 例:
オブジェクトをアップロードし、オブジェクトの暗号化方法をSSE-OSSに設定し、暗号化アルゴリズムをAES-256に設定します。
./ossutil64 cp examplefile.txt oss:// examplebucket/desfolder/ -- meta=x-oss-server-side-encryption:AES256
オブジェクトをアップロードし、オブジェクトの暗号化方法をSSE-KMSに設定します。 カスタマーマスターキー (CMK) IDを指定せずに
./ossutil64 cp examplefile.txt oss:// examplebucket/desfolder/ -- meta=x-oss-server-side-encryption:KMS
暗号化方法をSSE-KMSに設定すると、CMK IDの使用に対して課金されます。 詳細については、「KMSの課金」をご参照ください。
オブジェクトをアップロードし、オブジェクトの暗号化方法を指定したCMK IDのSSE-KMSに設定します。
./ossutil64 cp examplefile.txt oss:// examplebucket/desfolder/ -- meta=x-oss-server-side-encryption:KMS#x-oss-server-side-encryption-key-id:7bd6e2fe-cd0e-483e-acb0-f4b9e1 ******
サーバー側の暗号化の詳細については、「サーバー側の暗号化」をご参照ください。
オブジェクトをアップロードするときにオブジェクトのスナップショットを生成する
cpコマンドを実行して一度に複数のオブジェクトをアップロードし、コマンドで -- snapshot-pathを指定すると、指定したディレクトリにアップロードされたオブジェクトのスナップショットが生成され、オブジェクトの最終変更時刻が記録されます。 後続のアップロードタスクでは、既存のオブジェクトを最後に変更した時刻に基づいてスキップするかどうかを判断します。 コマンドで -- snapshot-pathを指定する場合は、OSS内のオブジェクトが最後にアップロードされた時点から他のユーザーによって変更されていないことを確認してください。 -- snapshot-pathオプションは、増分アップロードを高速化するために使用されます。 例:
./ossutil64 cp -r localfolder/ oss:// examplebucket/desfolder/ -- snapshot-path=path
ossutilは、snapshot-pathで指定したディレクトリに格納されているスナップショットを自動的に削除しません。 スナップショットが過剰なストレージ容量を消費しないようにするには、snapshot-pathで指定されたディレクトリから不要になったスナップショットを削除します。
スナップショット情報を読み書きするには、追加のオーバーヘッドが必要です。 アップロードするオブジェクトの数が少ない場合、ネットワークの状態が良好である場合、または他のユーザーがオブジェクトに対して操作を実行する必要がある場合は、このオプションを使用しないことをお勧めします。 代わりに、-- updateを使用して増分アップロードを実行できます。
cpコマンドでは、-- updateと -- snapshot-pathの両方を設定できます。 ossutilは、-- snapshot-pathで指定されたディレクトリに格納されているスナップショットに基づいて、オブジェクトをスキップするかどうかを決定します。 オブジェクトのスナップショットが生成されない場合、ossutilは -- updateの値に基づいてオブジェクトをスキップするかどうかを決定します。
指定された条件を満たすオブジェクトの一括アップロード
cpコマンドを実行して一度に複数のオブジェクトをアップロードし、コマンドで -- includeおよび -- excludeオプションを指定すると、指定された条件を満たすオブジェクトがアップロードされます。
-- includeおよび -- excludeオプションは、次の形式をサポートします。
アスタリスク (*): 任意の数の文字に一致します。 たとえば、*.txtはすべてのTXTファイルと一致します。
疑問符 (?): 1文字に一致します。 たとえば、abc?.jpgは、名前がabcの後に1文字 (abc1.jpgなど) であるすべてのJPGオブジェクトと一致します。
[sequence]: シーケンス内の文字に一致します。 たとえば、abc[1-5].jpgは、名前がabcの後に [1-5] の番号が続くJPGオブジェクトと一致します。 オブジェクト名はabc1.jpg、abc2.jpg、abc3.jpg、abc4.jpg、abc5.jpgです。
[!sequence]: シーケンス外の文字に一致します。 たとえば、abc[!0-7].jpgは、abc0.jpg、abc1.jpg、abc2.jpg、abc3.jpg、abc4.jpg、abc5.jpg、abc6.jpg、およびabc7.jpg以外のオブジェクトに一致します。
ルールには、-- includeおよび -- excludeによって指定された複数の条件を含めることができます。 これらの条件を設定した後、ossutilは左から右に条件を評価して最終的な一致を見つけます。 条件が指定されているディレクトリにtest.txtオブジェクトが存在する場合、ossutilは異なる一致ルールに基づいて一致結果を生成します。
ルール1:
-- include "* test *" -- exclude "*.txt"
。 ossutilは最初に-- include "* test *"
条件を評価し、オブジェクトが一致するため、結果にtest.txtオブジェクトを含めます。 次に、ossutilは-- exclude "*.txt"
条件を評価し、オブジェクト名に ".txt" が含まれているため、test.txtオブジェクトが一致していることを確認し、結果からオブジェクトを除外します。 test.txtオブジェクトは最終結果から除外されます。ルール2:
-- exclude "*.txt" -- include "* test *"
。 ossutilは最初に-- exclude "*.txt"
条件を評価し、オブジェクトが一致するため、結果からtest.txtオブジェクトを除外します。 次に、ossutilは-- include "* test *"
条件を評価し、オブジェクト名に "test" が含まれているため、test.txtオブジェクトが一致していることを確認し、そのオブジェクトを結果に含めます。 test.txtオブジェクトが最終結果に含まれます。ルール3:
-- include "* test *" -- exclude "*.txt" -- include "te?t.txt"
。 ossutilは最初に-- include "* test *"
条件を評価し、test.txtオブジェクトが一致することを確認してから、そのオブジェクトを結果に含めます。 次に、ossutilは-- exclude "*.txt"
条件を評価し、オブジェクト名に "txt" が含まれているため、test.txtオブジェクトが一致していることを確認し、結果からオブジェクトを除外します。 最後に、ossutilは-- include "te?t.txt"
条件を評価し、test.txtオブジェクトが一致していることを確認し、そのオブジェクトを結果に含めます。 test.txtオブジェクトが最終結果に含まれます。
-- includeおよび -- excludeオプションにはディレクトリを指定できません。 たとえば、-- include "/usr/test/.jpg"
は無効です。
例:
指定されたディレクトリからすべてのTXTオブジェクトをアップロードする
./ossutil64 cp localfolder/ oss:// examplebucket/desfolder/ -- include "*.txt" -r
名前にabcが含まれ、形式がJPGまたはTXTでないすべてのオブジェクトを指定されたディレクトリからアップロードします。
./ossutil64 cp localfolder/ oss:// examplebucket/desfolder/ -- include "* abc *" -- exclude "*.jpg" -- exclude "*.txt" -r
一般的なオプション
ossutilを使用して別のリージョンにあるバケットに切り替える場合は、コマンドに -eオプションを追加して、指定したバケットがあるリージョンのエンドポイントを指定します。 ossutilを使用して別のAlibaba Cloudアカウントに属するバケットに切り替える場合、コマンドに -iオプションを追加して、指定されたアカウントのAccessKey IDを指定し、コマンドに -kオプションを追加して、指定されたアカウントのAccessKey secretを指定します。
たとえば、次のコマンドを実行して、別のAlibaba Cloudアカウントが所有する中国 (上海) リージョンにあるexamplebucketバケットのdestfolderディレクトリにexampleobject.txtという名前のローカルファイルをアップロードできます。
./ossutil64 cp exampleobject.txt oss:// examplebucket/desfolder/ -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA **** -k 67DLVBkH7EamOjy2W5RVAHUY9H ****
共通オプションの詳細については、「共通オプション」をご参照ください。