cpコマンドを実行して、ローカルファイル、画像、ビデオなどのリソースをObject Storage Service (OSS) にアップロードできます。 ossutilは、大きなファイルのアップロードに特に適しています。 コマンドに -- includeおよび -- excludeオプションを含めて、指定した条件を満たすファイルを一括アップロードすることもできます。
使用上の注意
このトピックのサンプルコマンドラインは、64ビットLinuxシステムに基づいています。 他のシステムの場合は、を交換します。対応するバイナリ名を持つコマンドの /ossutil64。 詳細は、「ossutilコマンドリファレンス」をご参照ください。
デフォルトでは、cpコマンドを実行してオブジェクトをアップロードすると、マルチパートアップロードと再開可能アップロードが使用されます。 アップロードが中断された場合、アップロードされたデータは部品としてOSSバケットに保存されます。 アップロードされたパーツが不要になった場合は、追加のストレージコストを回避するために、次のいずれかの方法で削除することを推奨します。
手動でパーツを削除します。 詳細は、「rm」をご参照ください。
部品を自動的に削除するライフサイクルルールを設定します。 詳細については、「ライフサイクルルールの設定」をご参照ください。
コマンド構文
. /ossutil64 cp file_url cloud_url
[-r, -- recursive]
[-f -- force]
[-u -- 更新]
[-- maxuppspeed <value>]
[-- enable-symlink-dir]
[-- disable-all-symlink]
[-- disable-無視-エラー]
[-- 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 | OSSオブジェクトのパス。 パスを |
-r, -- recursive | 再帰を指定します。 このオプションを指定すると、指定された条件を満たすバケット内のすべてのオブジェクトに対して操作が実行されます。 このオプションを指定しない場合、指定されたオブジェクトに対してのみ操作が実行されます。 |
-f -- 力 | 確認を必要とせずに操作を強制します。 |
-u, -- update | 宛先オブジェクトが存在しない場合、またはソースファイルの最終変更時刻が宛先オブジェクトの最終変更時刻よりも遅い場合にのみ、ファイルをアップロードします。 |
-- maxupspeed | 最大アップロード速度。 単位: KB/s。 デフォルト値:0 値0は、アップロード速度が制限されないことを指定します。 |
-- enable-symlink-dir | シンボリックリンクが指すサブディレクトリをアップロードします。 デフォルトでは、サブディレクトリはアップロードされません。 |
-- disable-all-symlink | アップロード時に、シンボリックリンクが指すサブディレクトリと、このサブディレクトリ内のすべてのオブジェクトを無視します。 |
-- disable-無視-エラー | バッチ操作中にエラーが無視されないように指定します。 |
-- only-current-dir | 現在のディレクトリ内のオブジェクトのみをアップロードします。 このディレクトリ内のサブディレクトリおよびサブディレクトリ内のオブジェクトは無視されます。 |
-- bigfile-threshold | 再開可能なアップロードを実行するためのしきい値。 オブジェクトサイズがしきい値を超える場合、再開可能なアップロードが使用されます。 単位:バイト デフォルトのオブジェクトサイズのしきい値は100 MBです。 有効な値: 0 ~ 9223372036854775807 |
-- 部分サイズ | 部品サイズ。 単位:バイト デフォルトでは、ossutilはオブジェクトサイズに基づいて部品サイズを決定します。 有効な値: 1 ~ 9223372036854775807 |
-- checkpoint-dir | 再開可能アップロードタスクに関する情報が格納されるディレクトリ。 再開可能なアップロードが失敗した場合、ossutilは自動的に |
-- encoding-type | オブジェクトの名前をエンコードするために使用されるメソッド。 このオプションを指定する場合は、値をurlに設定します。 このオプションを指定しない場合、オブジェクトの名前はエンコードされません。 |
-含める | 指定された条件を満たすすべてのオブジェクトを含みます。 構文と例の詳細については、「指定された条件を満たすオブジェクトの一括アップロード」をご参照ください。 |
-除外 | 指定された条件を満たすすべてのオブジェクトを除外します。 構文と例の詳細については、「指定された条件を満たすオブジェクトの一括アップロード」をご参照ください。 |
-メタ | オブジェクトメタデータ。 オブジェクトメタデータには、標準HTTPヘッダーとユーザーメタデータが含まれます。 ユーザーメタデータは |
-- acl | オブジェクトのアクセス制御リスト (ACL) 。 有効な値:
|
-- snapshot-path | アップロードされたオブジェクトのスナップショットが保存されるディレクトリ。 次のアップロードで、ossutilは指定されたディレクトリからスナップショット情報を読み取り、増分アップロードを実行します。 |
-- disable-crc64 | 64ビット巡回冗長検査を無効にする (CRC-64) 。 デフォルトでは、ossutilはデータ送信中にCRC-64を有効にします。 |
-- disable-dir-object | オブジェクトのアップロード中にディレクトリのオブジェクトを生成しません。 |
-- 支払人 | リクエストの支払人。 指定したパスのリソースにアクセスするリクエスタにトラフィックとリクエストの料金を支払う場合は、このオプションを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 (ルートディレクトリ内のサブディレクトリ)
宛先OSSバケット: examplebucket
宛先バケットのディレクトリ: desfolder
簡易アップロード
ローカルファイル、画像、ビデオなどのリソースをOSSにアップロードする場合は、ossutilを使用できます。 次のサンプルコマンドは、ossutilを使用してデータをOSSにアップロードする方法の例を示しています。
単一のローカルファイルをアップロードする
アップロードされたオブジェクトの名前を指定しない場合、OSSのオブジェクトはローカルファイルと同じ名前を使用します。 アップロードされたオブジェクトの名前を指定した場合、OSSのオブジェクトは指定された名前を使用します。
. /ossutil64 cp examplefile.txt oss:// examplebucket/desfolder/
ローカルディレクトリからファイルをアップロードする
cpコマンドに -rオプションを追加して、ローカルディレクトリからOSSパスにファイルをアップロードできます。
. /ossutil64 cp -r localfolder/ oss:// examplebucket/desfolder/
最終変更時刻が指定した時間範囲内であるファイルをローカルディレクトリからアップロードする
次のコマンドを実行して、最終変更時刻が10月31日10:09:18 (UTC + 8) から2023日12:55:58 (UTC + 8) 10月31日2023の範囲内のファイルをローカルディレクトリから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-エンコード: 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では、ディレクトリは0バイトのオブジェクトで、末尾にスラッシュ (/) が付いています。 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: まれなアクセス (IA)
アーカイブ: Archive
コマンドでオブジェクトのストレージクラスを指定しない場合、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
オブジェクトをアップロードし、オブジェクトの暗号化メソッドを指定する
オブジェクトをアップロードするときに、オブジェクトを暗号化された状態で格納するためのサーバー側の暗号化方法を指定できます。 サンプルコマンド:
オブジェクトをアップロードするときに暗号化をAES-256 SSE-OSSを指定する
. /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に設定すると、キーの使用に対して課金されます。 詳細については、「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は、abc1.jpgのように、名前がabcの後に1文字が続くすべての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シークレットを指定します。
たとえば、次のコマンドを実行して、ローカルファイルexampleobject.txtを、中国 (上海) リージョンにあり、別のAlibaba Cloudアカウントが所有するexamplebucketバケットのdestfolderディレクトリにアップロードできます。
. /ossutil64 cp exampleobject.txt oss:// examplebucket/desfolder/ -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA **** -k 67DLVBkH7EamOjy2W5RVAHUY9H ****
共通オプションの詳細については、「共通オプション」をご参照ください。