はじめに
皆さん、こんにちは
早速本題ですが、この前 Firebase の Storage にあるファイルを一括ダウンロードしようと思ったらできませんでした。
なぜか複数ファイルを選択することはできるのに、**少なくとも画像ファイル(.webp)**では、ダウンロードボタンを押してもできませんでした。(1ファイルだけでも同じく)
本来できるはずですが、私の環境ではうまくいきませんでした。
ダウンロードを押すと、選択したファイルのうち一番上のファイルが開かれて画像が表示されるだけ。右クリックして画像として保存すればできますが、1つ1つファイルを開いて保存みたいなことは流石にしたくありませんよね。特にファイルがたくさんある場合は。
今回は別のダウンロード方法について紹介しようと思います。
実行環境
- macOS 26.5.2(25F84)
- MacBook Air (M2, 2022)
- Google Chrome バージョン 151.0.7922.174
How to
Google Cloud の Cloud Storage を使用します。
Firebase の Storage は Cloud Storage を使っている (Cloud Storage for Firebase) ので、ここからでもアクセスできます。
コンソール > クイックアクセスにある Cloud Storage > 左の一覧から「バケット」を選択
ただ、ここでファイルやフォルダを選択してダウンロードを押すと、gcloud storage cp --recursiveを使ったコマンドが現れると思います。これは gcloud という Google Cloud CLI の Cloud Storage とローカル間などでファイルをコピーするためのコマンドです。
では、インストールしましょう。
Mac の場合は、Homebrew を使うと良いと思います。
brew update && brew install --cask gcloud-cli
インストールできたら、
gcloud auth login
でダウンロードしたいデータがあるプロジェクトを持つ Google アカウントにログインします。
gcloud CLIの初期設定を行うためgcloud initというコマンドがありますが、今回のようにコマンドでバケットを直接指定する場合は、実行しなくてもダウンロードできます。
実行するコマンドは、先ほど Google Cloud の画面で表示されたコマンドをそのまま実行しても問題ないのですが、表示されたコマンドは
gcloud storage cp --recursive \
"gs://..." \
.
の形をしていると思います。2行目は該当のデータがある Cloud Storage 上の場所を表していますが、3行目はダウンロード先のローカルPCのパスを表しています。デフォルトだと作業ディレクトリ.が指定されているので、お好みでパスを設定すると良いと思います。
--recursiveを付けることで、指定したフォルダ以下のファイルを再帰的にダウンロードできます。
また、ダウンロードするデータのサイズによって追加料金が発生する場合があります。
.appspot.com legacy buckets と .firebasestorage.app and any additional buckets で無料枠が異なるのでご注意ください。
おわりに
これからも開発を楽しんでいきましょう!