syncコマンドを実行すると、同じリージョンにあるObject Storage Service (OSS) バケット間、または同じバケットのディレクトリ間で、複数のオブジェクトを同時に同期できます。
使用上の注意
OSSディレクトリ間でオブジェクトを同期するには、
oss:GetObject、oss:ListObjects、oss:PutObject、およびoss:DeleteObject権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。
バイナリ名
ossutil 1.6.16以降の場合、コマンドラインでossutilをバイナリ名として直接使用できます。 オペレーティングシステムに基づいてバイナリ名を更新する必要はありません。 1.6.16より前のossutilの場合、オペレーティングシステムに基づいてバイナリ名を更新する必要があります。 詳細は、「ossutilコマンドリファレンス」をご参照ください。
同期するローカルファイルの数
-- deleteオプションを含めずにsyncコマンドを実行する場合、一度に同期できるローカルファイルの数に制限はありません。 syncコマンドの実行時に -- deleteオプションを含めると、一度に最大100万個のローカルファイルを同期できます。 同期するローカルファイルの数が1百万を超える場合、最大同期数1000000を超える。 エラーメッセージが返されます。
同期とcpの違い
syncコマンドは、指定したディレクトリ内のすべてのオブジェクトとサブディレクトリを再帰的に同期します。 cpコマンドは, -rオプションを指定した場合にのみ, 再帰的にオブジェクトを同期します。
同期コマンドを実行してOSSバケットにデータを同期する場合、コマンドに -- deleteオプションを追加して、宛先バケットから次のオブジェクトを削除できます。 このようにして、同期されたオブジェクトのみが宛先バケットに保持されます。 cpコマンドは -- deleteオプションをサポートしていません。
syncコマンドは -- version-idオプションをサポートしていません。 同期コマンドを使用して、バージョン管理が有効になっているバケット内の以前のバージョンのオブジェクトを同期することはできません。 cpコマンドは、-- version-idオプションをサポートしています。
上記の違いを除いて、syncコマンドとcpコマンドを同様に使用できます。 cpコマンドの実行方法の詳細については、「オブジェクトのコピー」をご参照ください。
制限事項
Cold ArchiveまたはDeep Cold Archiveオブジェクトをソースバケットから宛先バケットに同期することはできません。
コマンド構文
ossutil sync cloud_url cloud_url
[-f --force]
[-u --update]
[--delete]
[--enable-symlink-dir]
[--disable-all-symlink]
[--disable-ignore-error]
[--only-current-dir]
[--output-dir <value>]
[--bigfile-threshold <value>]
[--part-size <value>]
[--checkpoint-dir <value>]
[--encoding-type <value>]
[--include <value>]
[--exclude <value>]
[--meta <value>]
[--acl <value>]
[--maxupspeed <value>]
[--disable-crc64]
[--payer <value>]
[-j, --job <value>]
[--parallel <value>]
[--retry-times <value>]
[--tagging <value>]次の表に、コマンド構文のパラメーターとオプションを示します。
パラメータ /オプション | 説明 |
cloud_url | ソースパスと宛先パス。 パスは 重要
|
-f -- 力 | 確認を必要とせずに操作を強制します。 |
-u, -- update | オブジェクトがデスティネーションに存在しない場合、またはソース内のオブジェクトの最終変更時刻がデスティネーション内のオブジェクトの最終変更時刻よりも遅い場合にのみ、ossutilがソースからオブジェクトを同期するように指定します。 |
-- 削除 | 同期されたオブジェクトのみが宛先バケットの指定されたパスに保持されるように指定します。 パス内の他のオブジェクトは削除されます。 警告 コマンドで -- deleteオプションを指定するには、データが誤って削除されないようにバージョン管理を有効にすることを推奨します。 バージョン管理の詳細については、「概要」をご参照ください。 |
-- enable-symlink-dir | シンボリックリンクが指すサブディレクトリを同期するかどうかを指定します。 |
-- disable-all-symlink | ディレクトリポイント内のシンボリックリンクがあるすべてのオブジェクトとサブディレクトリが同期されないことを指定します。 |
-- disable-無視-エラー | バッチ操作中にエラーが無視されないように指定します。 |
-- only-current-dir | 現在のディレクトリ内のオブジェクトのみを同期するように指定します。 現在のディレクトリのサブディレクトリとこれらのサブディレクトリのオブジェクトは同期されません。 |
-- output-dir | 出力ファイルが格納されるディレクトリ。 出力ファイルは、バッチ同期タスクでエラーが発生したときに生成されるレポートです。 既定では、これらのレポートは現在のディレクトリのossutil_outputディレクトリに保存されます。 |
-bigfile-threshold | 再開可能アップロードを使用するためのオブジェクトサイズのしきい値。 単位:バイト デフォルトのオブジェクトサイズのしきい値は100 MBです。 有効な値: 0 ~ 9223372036854775807 |
-- 部分サイズ | 部品サイズ。 単位:バイト デフォルトでは、ossutilはオブジェクトサイズに基づいて部品サイズを決定します。 有効な値: 1 ~ 9223372036854775807 |
-- checkpoint-dir | 再開可能なアップロードタスクのチェックポイント情報が格納されるディレクトリ。 タスクが失敗すると、ossutilは自動的にという名前のディレクトリを作成します。 |
-- encoding-type | オブジェクト名のエンコーディング。 値をurlに設定します。 このパラメーターを設定しない場合、オブジェクトの名前はエンコードされません。 |
-含める | 指定された条件を満たすすべてのオブジェクトを含みます。 詳細については、「オプション -- includeおよび -- exclude」をご参照ください。 |
-除外 | 指定された条件を満たすすべてのオブジェクトを除外します。 詳細については、「オプション -- includeおよび -- exclude」をご参照ください。 |
-メタ | オブジェクトメタデータを設定します。 値は |
-- acl | 宛先オブジェクトのアクセス制御リスト (ACL) 。 有効な値:
|
-- maxupspeed | 最大アップロード速度。 単位: KB/s。 デフォルト値:0 値0は、アップロード速度が無制限であることを指定します。 |
-- disable-crc64 | CRC-64検証を無効にします。 |
-- 支払人 | 操作によって生成される料金の支払人。 指定したパスのリソースにアクセスするリクエスタに、操作によって発生する料金を支払うようにする場合は、このオプションをrequesterに設定します。 |
-j, -- job | マルチオブジェクト操作で実行できる同時実行タスクの数。 有効な値: 1 ~ 10000 デフォルト値: 3。 |
-- 平行 | 単一オブジェクト操作で実行できる同時実行タスクの数。 有効な値: 1 ~ 10000 このオプションを指定しない場合、操作タイプとオブジェクトサイズに基づいてこのオプションの値を指定します。 |
-- retry-times | エラーが発生した場合のリトライ回数。 有効な値: 1 ~ 500 デフォルト値は 10 です。 |
-- タグ付け |
|
例
Alibaba Cloudアカウントで、examplebucket1とexamplebucket2の2つのバケットを考えてみましょう。 examplebucket1バケットには、exampledirとsrcdirの2つのディレクトリがあります。 examplebucket2バケットには、destdirという名前のディレクトリがあります。 次の構造は、同期前のexamplebucket1とexamplebucket2のオブジェクトとディレクトリを示しています。
examplebucket1 examplebucket2
├── exampledir/ └── destdir/
│ ├── a.txt ├── c.txt
│ └── b.txt └── e.txt
└── srcdir/
└── d.txt 次の例は、同期コマンドを実行して、さまざまなシナリオでOSSパス間でオブジェクトを同期する方法を示しています。
examplebucket1のexampledirディレクトリを同じバケットのsrcdirディレクトリに同期します。
ossutil sync oss://examplebucket1/exampledir/ oss://examplebucket1/srcdir/上記のコマンドを実行すると、exampledirディレクトリ内のすべてのオブジェクトがsrcdirディレクトリに同期されます。 次の構造は、同期後のexamplebucket1のオブジェクトとディレクトリを示しています。
examplebucket1 examplebucket1 ├── exampledir/ ├── exampledir/ │ ├── a.txt │ ├── a.txt │ └── b.txt │ └── b.txt └── srcdir/ └── srcdir/ └── d.txt ├── a.txt ├── b.txt └── d.txtexamplebucket1のexampledirディレクトリをexamplebucket2のdestdirディレクトリに同期します。
ossutil sync oss://examplebucket1/exampledir/ oss://examplebucket2/destdir/上記のコマンドを実行すると、examplebucket1のexampledirディレクトリ内のすべてのオブジェクトがexamplebucket2のdestdirディレクトリに同期されます。 次の構造は、同期後のexamplebucket1とexamplebucket2のオブジェクトとディレクトリを示しています。
examplebucket1 examplebucket2 ├── exampledir/ └── destdir/ │ ├── a.txt ├── a.txt │ └── b.txt ├── b.txt └── srcdir/ ├── c.txt └── d.txt └── e.txtexamplebucket1からexamplebucket2にすべてのオブジェクトを同期し、-- deleteオプションを使用して、examplebucket2に存在するがexamplebucket1には存在しないオブジェクトを削除します。
ossutil sync oss://examplebucket1 oss://examplebucket2 --delete上記のコマンドを実行すると、examplebucket1のオブジェクトはexamplebucket2に同期されます。 同期前にexamplebucket2に存在するc.txtおよびe.txtオブジェクトは、同期が完了すると削除されます。
examplebucket1 examplebucket2 ├── exampledir/ ├── exampledir/ │ ├── a.txt │ ├── a.txt │ └── b.txt │ └── b.txt └── srcdir/ └── srcdir/ └── d.txt └── d.txt上記のコマンドが正常に実行されると、次の内容のような出力が返され、同期されたオブジェクトの数、同期されたオブジェクトのサイズ、および同期に費やされた時間が示されます。
Succeed: Total num: 2, size: 750,081. OK num: 2(upload 2 files). average speed 1641000(byte/s)
一般的なオプション
ossutilを使用して別のリージョンにあるバケットに切り替える場合は、-eオプションを追加して、バケットが配置されているリージョンのエンドポイントを指定します。 ossutilを使用して別のAlibaba Cloudアカウントに属するバケットに切り替える場合、-iオプションを追加して指定されたアカウントのAccessKey IDを指定し、-kオプションを追加して指定されたアカウントのAccessKey secretを指定します。
たとえば、次のコマンドを実行して、examplebucketバケットのsrcfolderディレクトリをtestbucketバケットのexamplefolderディレクトリに同期できます。 examplebucketバケットは中国 (上海) リージョンにあり、別のAlibaba Cloudアカウントが所有しています。
ossutil sync oss://examplebucket/srcfolder/ oss://testbucket/examplefolder/ -e oss-cn-shanghai.aliyuncs.com -i LTAI**************** -k yourAccessKeySecret共通オプションの詳細については、「共通オプション」をご参照ください。