sync コマンドを使用して、ローカルファイルまたはフォルダを OSS に同期します。sync コマンドは、ファイルの最終更新時刻を比較するか、スナップショット情報を使用して、変更されたファイルのみを増分的に識別してアップロードします。このプロセスにより、ソースと宛先のコンテンツの一貫性が効率的に維持されます。
仕組み
ファイル数
--delete オプションなしで sync コマンドを実行する場合、一度に同期できるファイル数に制限はありません。--delete オプションを含める場合、一度に最大 100 万個のファイルを同期できます。同期するファイル数が 100 万を超えると、over max sync numbers 1000000. エラーが返されます。
sync コマンドと cp コマンドの違い
sync コマンドは、指定されたフォルダ内のすべてのファイルとサブディレクトリを再帰的に走査します。cp コマンドは、-r オプションを追加した場合にのみ再帰的な操作を実行します。
sync コマンドを使用してデータを OSS に同期する場合、--delete オプションを追加して、ソースには存在しないが宛先には存在するファイルを削除できます。このオプションにより、宛先ディレクトリには現在の同期からのファイルのみが含まれるようになります。cp コマンドは --delete オプションをサポートしていません。
sync コマンドは --version-id オプションをサポートしていません。sync コマンドを使用して、バージョン管理が有効になっているバケット内のファイルの以前のバージョンを同期することはできません。cp コマンドは --version-id オプションをサポートしています。
これらの違いを除き、sync コマンドと cp コマンドは同様の方法で使用されます。cp コマンドの使用方法と例の詳細については、「cp (ファイルのアップロード)」をご参照ください。
使用上の注意
ossutil バージョン 1.6.16 以降、 ossutil バイナリは、オペレーティングシステムに合わせて名前を変更しなくても直接使用できます。 1.6.16 より前のバージョンでは、バイナリファイルの名前を変更する必要があります。 詳細については、「ossutil コマンドリファレンス」をご参照ください。
権限
デフォルトでは、Alibaba Cloud アカウントのみがすべての API 操作を実行する権限を持っています。このコマンドを実行するには、RAM ユーザーまたは RAM ロールが、Alibaba Cloud アカウントまたは管理者によって RAM ポリシーまたは バケットポリシーを介して必要な権限を付与される必要があります。
API アクション | 説明 |
oss:ListObjects | 宛先バケット内のオブジェクトを一覧表示して、ローカルファイルと比較します。 |
oss:PutObject | ファイルを OSS にアップロードします。 |
oss:DeleteObject | [オプション] --delete オプションを使用して宛先バケットから余分なファイルを削除する場合に必要です。 |
oss:PutObjectTagging | [オプション] --tagging オプションを使用してオブジェクトにタグを追加する場合に必要です。 |
コマンド構文
ossutil sync file_url cloud_url [options]次の表に、パラメーターとオプションを示します。
パラメーター | 説明 |
file_url | 同期するオンプレミスフォルダのパス。たとえば、Linux の場合は |
cloud_url | 宛先 OSS フォルダのパス。フォーマットは |
-f --force | 確認プロンプトなしで操作を強制します。 |
-u, --update | 宛先ファイルが存在しない場合、またはソースファイルの最終更新時刻が宛先ファイルの最終更新時刻より新しい場合にのみファイルを同期します。 |
--delete | 宛先パス内の他のファイルを削除し、現在の同期からのファイルのみを保持します。 警告 --delete オプションを使用する前に、バージョン管理を有効にして、誤ったデータ削除を防ぎます。 |
--enable-symlink-dir | リンクされたサブディレクトリを同期します。 |
--disable-all-symlink | フォルダの同期中に、リンクされたすべてのファイルとリンクされたサブディレクトリを無視します。 |
--disable-ignore-error | バッチ操作中にエラーを無視しません。 |
--only-current-dir | 現在のディレクトリ内のファイルのみを同期します。サブディレクトリとその中のファイルは無視されます。 |
--output-dir | 出力ファイルを保存するディレクトリを指定します。出力ファイルは、バッチ同期中にエラーが発生したときに生成されるレポートファイルです。デフォルトでは、これらのレポートは現在のディレクトリの ossutil_output ディレクトリに保存されます。 |
-bigfile-threshold | 再開可能なアップロードのファイルサイズしきい値。単位: バイト。
デフォルト値: 100 MB 有効な値: 0~9223372036854775807 |
--part-size | パートサイズ。単位: バイト。デフォルトでは、ossutil はファイルサイズに基づいて適切なパートサイズを計算します。
有効な値: 1~9223372036854775807 |
--checkpoint-dir | 再開可能なアップロードのチェックポイント情報を保存するディレクトリを指定します。再開可能なアップロードが失敗すると、ossutil は自動的に |
--encoding-type | ファイル名のエンコード形式。url に値を設定します。このオプションを指定しない場合、ファイル名はエンコードされません。 |
--snapshot-path | 同期のスナップショット情報を保存するディレクトリを指定します。次の同期タスクでは、ossutil はこのディレクトリからスナップショット情報を読み取り、増分同期を実行します。 |
--include | 指定された条件を満たすすべてのファイルを含めます。 詳細については、「include および exclude オプション」をご参照ください。 |
--exclude | 指定された条件を満たすすべてのファイルを除外します。 詳細については、「include and --exclude」をご参照ください。 |
--meta | ファイルのメタデータを設定します。フォーマットは |
--acl | ファイルのアクセス制御リスト (ACL)。有効な値:
|
--maxupspeed | 最大アップロード速度。単位: KB/s。デフォルト値は 0 で、アップロード速度が制限されないことを示します。 |
--disable-crc64 | CRC-64 データ検証を無効にします。 |
--payer | リクエストの支払方法。指定されたパスのリソースへのアクセスによって生成されるトラフィックやリクエストなどの料金をリクエスタに支払わせたい場合は、このオプションを requester に設定します。 |
-j,--job | 複数ファイル操作の同時タスク数。デフォルト値: 3。有効な値: 1~10000。 |
--parallel | 単一ファイル操作の同時タスク数。有効な値: 1~10000。このオプションを指定しない場合、ossutil は操作の種類とファイルサイズに基づいて値を決定します。 |
--retry-times | エラーが発生した場合のリトライ回数。デフォルト値: 10。有効な値: 1~500。 |
--tagging | ファイルのタグ情報。フォーマットは |
このコマンドの他の共通オプションの詳細については、「共通オプション」をご参照ください。
例
次の例では Linux システムを使用します。お使いのオペレーティングシステムと環境に合わせてパラメーターを変更する必要があります。この例では、次の環境を想定しています:
2 つのファイル d.txt と e.png がローカルの localfolder ディレクトリにあります。examplebucket という名前のバケットの destfolder ディレクトリには、2 つのファイル a.txt と b.txt、および C という名前のサブディレクトリが含まれています。初期コンテンツは次のとおりです。
Local root directory examplebucket
└── localfolder └── destfolder/
├── d.txt ├── a.txt
└── e.png ├── b.txt
└── C/ローカルフォルダを OSS に同期する
ローカルの `localfolder/` ディレクトリから宛先の `destfolder/` ディレクトリにすべてのファイルを同期します。この操作では、新しいファイルのみがアップロードされます。宛先バケット内の `a.txt` や `b.txt` などの既存のファイル、および `C/` サブディレクトリは保持されます。
ossutil sync localfolder/ oss://examplebucket/destfolder/同期が成功すると、出力には同期されたファイルの数、合計ファイルサイズ、および操作にかかった時間が含まれます:
Succeed: Total num: 2, size: 750,081. OK num: 2(upload 2 files).
average speed 1641000(byte/s)同期後、`destfolder/` ディレクトリの構造は次のようになります:
destfolder/
├── a.txt
├── b.txt
├── d.txt
├── e.png
└── C/同期中に宛先ディレクトリ内の余分なファイルを削除する
ローカルの `localfolder/` ディレクトリを同期するときに、--delete オプションを使用して、ソースにない `destfolder/` ディレクトリから `a.txt`、`b.txt`、`C/` などのファイルとディレクトリを削除できます。
ossutil sync localfolder/ oss://examplebucket/destfolder/ --delete同期後、`destfolder/` のディレクトリ構造は `localfolder/` と同じになります:
destfolder/
├── d.txt
└── e.png特定のファイルをフィルタリングして同期する
--include および --exclude オプションを使用して、同期するファイルをフィルタリングできます。
たとえば、次のコマンドは .txt ファイルのみを同期します。
ossutil sync localfolder/ oss://examplebucket/destfolder/ --include "*.txt"コマンドを実行すると、d.txt のみがアップロードされ、e.png は無視されます。宛先バケット内の既存のファイルは影響を受けません。
destfolder/ ├── a.txt ├── b.txt ├── d.txt └── C/次のコマンドは、.txt 以外のファイルのみを同期します。
ossutil sync localfolder/ oss://examplebucket/destfolder/ --exclude "*.txt"コマンドを実行すると、e.png のみがアップロードされ、d.txt は無視されます。宛先バケット内の既存のファイルは影響を受けません。
destfolder/ ├── a.txt ├── b.txt ├── e.png └── C/
宛先ディレクトリ内の同じ名前のファイルを強制的に上書きする
デフォルトでは、アップロードするファイルと同じ名前のファイルが宛先ディレクトリに存在する場合、ossutil は上書きを確認するプロンプトを表示します。同じ名前のすべての宛先ファイルを上書きすることが確実な場合は、-f または --force オプションを使用して確認プロンプトをスキップし、ファイルを強制的に上書きできます。
ossutil sync localfolder/ oss://examplebucket/destfolder/ -fコマンドが正常に実行されると、出力には同期されたファイルの数、合計サイズ、平均速度などの情報が含まれます。以下はサンプル出力です:
Succeed: Total num: 2, size: 750,081. OK num: 2(upload 2 files).
average speed 1641000(byte/s)クロスアカウント同期
-e、-i、および -k オプションを使用して、ローカルの `srcfolder` ディレクトリから `examplebucket` バケットの `testfolder` ディレクトリにファイルを同期します。このバケットは中国 (上海) リージョンにあり、別の Alibaba Cloud アカウントによって所有されています。
バケットのリージョンのエンドポイントを指定してください。詳細については、「リージョンとエンドポイント」をご参照ください。
ossutil sync srcfolder/ oss://examplebucket/testfolder/ -e oss-cn-shanghai.aliyuncs.com -i LTAI4Fw2NbDUCV8zYUzA**** -k 67DLVBkH7EamOjy2W5RVAHUY9H****セキュリティのヒント: コマンドに AccessKey を含めると、セキュリティリスクが生じます。自動化されたタスクや長期的なタスクの場合は、ソースアカウントの RAM ロールを作成し、宛先アカウントに権限を付与することを推奨します。この方法により、より安全なクロスアカウントアクセスが提供されます。