すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:OSSパス間でオブジェクトを同期する, OSSパス間でオブジェクトを同期する

最終更新日:Apr 07, 2025

syncコマンドを実行すると、同じリージョンにあるObject Storage Service (OSS) バケット間、または同じバケットのディレクトリ間で、複数のオブジェクトを同時に同期できます。

使用上の注意

  • バイナリ名

    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

ソースパスと宛先パス。 パスはoss:// bucketname/path形式です。 たとえば、examplebucketのsrcdirディレクトリを同じバケットのdestdirディレクトリに同期するには、ソースパスをoss:// examplebucket/srcdir/ に設定し、宛先パスをoss:// examplebucket/destcdir/ に設定します。

重要

cloud_urlの値がスラッシュ (/) で終わらない場合、ossutilは自動的に値の末尾に1を追加します。

-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は自動的にという名前のディレクトリを作成します。. ossutil_checkpointディレクトリにチェックポイント情報を保存します。 タスクが成功すると、ossutilはディレクトリを削除します。 チェックポイントディレクトリを指定する場合は、ディレクトリを削除できることを確認してください。

-- encoding-type

オブジェクト名のエンコーディング。 値をurlに設定します。 このパラメーターを設定しない場合、オブジェクトの名前はエンコードされません。

-含める

指定された条件を満たすすべてのオブジェクトを含みます。

詳細については、「オプション -- includeおよび -- exclude」をご参照ください。

-除外

指定された条件を満たすすべてのオブジェクトを除外します。

詳細については、「オプション -- includeおよび -- exclude」をご参照ください。

-メタ

オブジェクトメタデータを設定します。 値はheader:value#header:value形式です。 例: Cache-Control:no-cache#Content-Encoding:gzip オブジェクトメタデータの詳細については、「set-meta」をご参照ください。

-- acl

宛先オブジェクトのアクセス制御リスト (ACL) 。 有効な値:

  • デフォルト: オブジェクトのACLは、オブジェクトが格納されているバケットのACLと同じです。

  • private (デフォルト): バケット内のオブジェクトに対して読み取りおよび書き込み操作を実行できるのは、バケット所有者のみです。 他のユーザーはバケット内のオブジェクトにアクセスできません。

  • public-read: バケット内のオブジェクトに対して書き込み操作を実行できるのは、バケット所有者のみです。 匿名ユーザーを含むすべてのユーザーは、バケット内のオブジェクトに対して読み取り操作を実行できます。 これにより、バケット内のデータへの無制限のアクセスと、予想外に高い料金が発生する可能性があります。 ユーザーが禁止されているデータまたは情報をアップロードすると、あなたの法的権利が侵害される可能性があります。 したがって、特別な場合を除き、オブジェクトACLをこの値に設定しないことをお勧めします。

  • public-read-write: 匿名ユーザーを含むすべてのユーザーが、バケット内のオブジェクトに対して読み取りおよび書き込み操作を実行できます。 これにより、バケット内のデータへの無制限のアクセスと、予想外に高い料金が発生する可能性があります。 ACLをpublic-read-writeに設定するときは注意してください。

-- maxupspeed

最大アップロード速度。 単位: KB/s。 デフォルト値:0 値0は、アップロード速度が無制限であることを指定します。

-- disable-crc64

CRC-64検証を無効にします。

-- 支払人

操作によって生成される料金の支払人。 指定したパスのリソースにアクセスするリクエスタに、操作によって発生する料金を支払うようにする場合は、このオプションをrequesterに設定します。

-j, -- job

マルチオブジェクト操作で実行できる同時実行タスクの数。 有効な値: 1 ~ 10000 デフォルト値: 3。

-- 平行

単一オブジェクト操作で実行できる同時実行タスクの数。 有効な値: 1 ~ 10000 このオプションを指定しない場合、操作タイプとオブジェクトサイズに基づいてこのオプションの値を指定します。

-- retry-times

エラーが発生した場合のリトライ回数。 有効な値: 1 ~ 500 デフォルト値は 10 です。

-- タグ付け

TagkeyA=TagvalueA&TagkeyB=TagvalueB .... 形式のオブジェクトのタグ。

Alibaba Cloudアカウントで、examplebucket1とexamplebucket2の2つのバケットを考えてみましょう。 examplebucket1バケットには、exampledirsrcdirの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.txt       
  • examplebucket1の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.txt 
  • examplebucket1から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

共通オプションの詳細については、「共通オプション」をご参照ください。