0

Google Cloud Storage はディレクトリ エントリを必要としないフラットなオブジェクト ストアですが、疑似ディレクトリ プレースホルダ(名前が で終わる空のエントリ/)を追加すると、gcsfuse が大幅に高速になります。gcsfuse オプションを省略して、--implicit-dirs非常に実行可能なパフォーマンスで GCS ディレクトリをブラウズできますが、これはプレースホルダーなしでは当てはまりません。

Q.ファイルのアップロード中にディレクトリ プレースホルダーを作成するようなコマンドをgsutilに発行する方法はありますか?gsutil cp -r your_directory gs://your-bucket/

別の方法として GCS API を呼び出すこともできますが、gsutil には、並列アップロードや再試行処理など、便利な機能がたくさんあります。

ローカル ツリーを作成します。

$ mkdir -p your_directory/subdir
$ echo hi > your_directory/hi.txt
$ echo there > your_directory/subdir/there.txt

$ ls -lR your_directory
total 8
-rw-r--r--  1 jerry  staff   3 Jan 21 17:24 hi.txt
drwxr-xr-x  3 jerry  staff  96 Jan 21 17:24 subdir/

your_directory/subdir:
total 8
-rw-r--r--  1 jerry  staff  6 Jan 21 17:24 there.txt

gsutilそれを GCS にコピーします。

$ gsutil cp -r your_directory gs://your-bucket/
Copying file://your_directory/hi.txt [Content-Type=text/plain]...
Copying file://your_directory/subdir/there.txt [Content-Type=text/plain]...
/ [2 files][    9.0 B/    9.0 B]
Operation completed over 2 objects/9.0 B.

$ gsutil ls -lr gs://your-bucket/your_directory
gs://your-bucket/your_directory/:
         3  2020-01-22T01:25:38Z  gs://your-bucket/your_directory/hi.txt

gs://your-bucket/your_directory/subdir/:
         6  2020-01-22T01:25:38Z  gs://your-bucket/your_directory/subdir/there.txt
TOTAL: 2 objects, 9 bytes (9 B)

gsutilテキスト ファイルの 2 つのオブジェクト (BLOB) のみが作成されていることに注意してください。ディレクトリ プレースホルダー blobyour_directory/またはyour_directory/subdir/.

gcsfuse your-bucket your-bucketマウントで:

$ find your_directory
find: your_directory: No such file or directory

gcsfuse --implicit-dirs your-bucket your-bucketマウントで:

$ find your_directory
your_directory
your_directory/hi.txt
your_directory/subdir
your_directory/subdir/there.txt

ゆっくり。

マウントに戻るとgcsfuse your-bucket your-bucket、ディレクトリ プレースホルダーを作成することで、テキスト ファイルを表示させることができます。

$ mkdir your_directory
$ ls your_directory
hi.txt

$ mkdir your_directory/subdir
$ ls your_directory
hi.txt  subdir/

$ ls your_directory/subdir/
there.txt
4

1 に答える 1