🧳

gsutil で複数パスのファイルを並列削除する

2021/07/16に公開2

-m オプションによる並列削除

gsutil コマンドで削除を行う際、削除するファイルが数多くある場合は、-m オプションを使用して、並列削除を行うことで削除を高速化できる(トップレベルのオプションとして指定する)。

-m
サポートされている操作(acl ch、acl set、cp、mv、rm、rsync、setmeta)を並行して実行できます。比較的高速なネットワーク接続で大量のファイルに操作を実行する場合、このオプションを使用すると、パフォーマンスが大幅に向上します。

gsutil -m rm "gs://example_bucket/**"

https://cloud.google.com/storage/docs/gsutil/addlhelp/TopLevelCommandLineOptions

ただ、このオプションを指定した場合でも、以下のように一つ一つコマンドを実行すると時間がかかりがち。

gsutil -m rm "gs://example_bucket/folder1/**"
gsutil -m rm "gs://example_bucket/folder2/**"
gsutil -m rm "gs://example_bucket/folder3/**"
gsutil -m rm "gs://example_bucket/folder4/**"
gsutil -m rm "gs://example_bucket/folder5/**"

-I オプションによる複数パスの削除

複数パスを一度に削除したい場合には -I オプションが有効だ。

-I Causes gsutil to read the list of objects to remove from stdin. This allows you to run a program that generates the list of objects to remove.

https://cloud.google.com/storage/docs/gsutil/commands/rm

-m オプションを組み合わせることで、複数パスのファイルを並列で削除することが可能だ。

cat << EOS | gsutil -m rm -I
gs://example_bucket/folder1/**
gs://example_bucket/folder2/**
gs://example_bucket/folder3/**
gs://example_bucket/folder4/**
gs://example_bucket/folder5/**
EOS

Discussion

catnosecatnose

有益な記事をありがとうございます!
本筋から外れますが、タグがcloustorageになっています。正しくはcloudstorageだと思います。

ptiringoptiringo

ほんとですね、、ありがとうございます! 修正しました。