Mit gsutil hochgeladene Dateien nicht sichtbar

Mal wieder eine kleine Erinnerung für mich: Dateien, die mit gsutil in einen GCP Bucket hochgeladen werden, sind mit den Standardeinstellungen von gcsfuse nicht sichtbar.

Die Lösung hierfür sind „Implicit dirctories“ (Doku dazu). Grundsätzlich „kennt“ GCP keine Ordner in den Storage Buckets, wenn man diese nicht explizit (z.B. per mkdir) anlegt. Mit z.B. gsutil kann man Dateien aber auch einfach inklusive der gewünschten Struktur hochladen (z.B. /folder/subfolder/file).

Jetzt gibt es zwei Möglichkeiten:
1. Man erzeugt nachträglich die gewünschte Ordnerstruktur (z.B. per mkdir -p /folder/subfolder)
2. Man mountet den Bucket bei Nutzung von gcsfuse mit dem Parameter --implicit-dirs.

Mit gcsfuse können GCP Storage Accounts per fuse gemountet werden. Ich mache das z.B. in der fstab mit einer solchen Zeile:
gcs-bucket-name /mnt gcsfuse rw,noauto,user,key_file=/etc/key.json
Wenn ich dies um die Option implicit-dirs ergänze, werden die implizit (nicht explizit) angelegten Ordner sichtbar. Das sieht dann so aus:
gcs-bucket-name /mnt gcsfuse rw,noauto,user,implicit-dirs,key_file=/etc/key.json
Der Nachteil: Jeder Name Lookup erzeugt jetzt einen zusätzlichen Aufruf, d.h. erzeugt zusätzliche Kosten. Die bessere Lösung ist sicherlich immer, die Ordner nachträglich zu erzeugen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.