LoginSignup
5
0

More than 1 year has passed since last update.

gsutil で特定の拡張子を持つオブジェクトのみを rsync する方法

Last updated at Posted at 2021-12-07

この記事は Z Lab Advent Calendar 2021 の8日目の記事となります。

TL;DR

以下は .rpm という拡張を持つオブジェクトのみを rsync する例なのでユースケースに応じて書き換えてください。

$ gsutil rsync -x '^(?!.*\.rpm$).*$' src_url dst_url

解説

gsutil lsgsutil cp では *? などのワイルドカードが使えますが、gsutil rsync では以下のように src_url として単一の URL しか指定することができません。

$ gsutil rsync -r "gs://my-bucket/*.rpm" my-data
CommandException: Destination (gs://my-bucket/*.rpm) must match exactly 1 URL

これを解消するために -x オプションを使用して、不要なオブジェクトを除外するというアプローチを多くの方が紹介していますが、不要なオブジェクトが増える度にその命名に合わせてオプションを追加するのは面倒です。

なので、先述のコマンドのように .rpm という拡張子を持つオブジェクトのみを rsync したいケースでは、以下のように -x オプションで .rpm という拡張子を持っていないオブジェクトを除外する という使い方をした方がメンテナンスもしやすいかなと考えました。

$ gsutil rsync -r -x '^(?!.*\.rpm$).*$' gs://my-bucket my-data

-x オプションでは Python の正規表現がサポートされている仕様で、上記の正規表現については以下のブログを参考にさせてもらいました。

参考資料

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0