web-dev-qa-db-fra.com

Confus sur la manière de manipuler les autorisations de godets / objets GCS

Sur mon ordinateur portable, j'ai un répertoire contenant un sous-répertoire, qui contient à son tour un groupe de fichiers HTML. Cela ressemble à ceci:

% ls -lR 2000-09
2000-09:
total 12
drwxrwxr-x 2 skip skip 12288 Nov 18 07:42 html

2000-09/html:
total 648
-rw-r--r-- 1 skip skip 18489 Dec  4  2019 index.html
-rw-r--r-- 1 skip skip 18489 Dec  4  2019 maillist.html
-rw-r--r-- 1 skip skip  3468 Dec  4  2019 msg00000.html
-rw-r--r-- 1 skip skip  3270 Dec  4  2019 msg00001.html
-rw-r--r-- 1 skip skip  3194 Dec  4  2019 msg00002.html
...

J'utilise gsutil pour télécharger ce répertoire à mon godet:

% gsutil -m cp -r 2000-09 gs://my-secret-bucket/
Copying file://2000-09/html/msg00070.html [Content-Type=text/html]...
Copying file://2000-09/html/msg00060.html [Content-Type=text/html]...           
Copying file://2000-09/html/msg00029.html [Content-Type=text/html]...           
Copying file://2000-09/html/msg00052.html [Content-Type=text/html]...           
...

Il a l'air bien à travers la console. Je vois 2000-09, à l'intérieur de ce html, et à l'intérieur d'un tas de fichiers. Jusqu'ici tout va bien.

Maintenant, j'ouvre une coquille nuageuse et monte ce seau à l'aide de gcsfuse:

gcsfuse my-secret-bucket ~/mnt

mais la vue Directory résultante apparaît vide:

me@cloudshell:~ (whatever)$ ls -l ~/mnt
total 0
me@cloudshell:~ (whatever)$

Ensuite, je télécharge un couple de fichiers directement dans mon godet (au niveau supérieur)

% gsutil -m cp wrench?.jpg gs://my-secret-bucket/
Copying file://wrench1.jpg [Content-Type=image/jpeg]...
Copying file://wrench2.jpg [Content-Type=image/jpeg]...                         
/ [2/2 files][  1.0 MiB/  1.0 MiB] 100% Done                                    
Operation completed over 2 objects/1.0 MiB.

Je confirme qu'ils sont là dans la console, puis énumérez mon godet monté à nouveau. Ils sont visibles et je peux les lire:

$ ls -l ~/mnt
total 1049
-rw-r--r-- 1 me me 432451 Nov 18 19:09 wrench1.jpg
-rw-r--r-- 1 me me 640526 Nov 18 19:09 wrench2.jpg
me@cloudshell:~ (whatever) cksum mnt/wrench1.jpg
3659533210 432451 mnt/wrench1.jpg
me@cloudshell:~ (whatever)$

Il semble que les fichiers soient visibles au niveau supérieur, mais je ne peux pas comprendre comment rendre le répertoire et son contenu visible. L'interface Web est extrêmement déroutante pour un vieux gars unix comme moi qui veut voir des choses comme rw-r--r-- Lorsque vous regardez de longues annonces et exécutez chmod 0644 ... Pour ce faire, quand ça n'a pas l'air bien. Comment faire mon objet/dossier/dossier/dossier/dossier 2000-09 et mon contenu (récursivement) est-il visible? En fin de compte, je veux l'avoir visible à un GCP-hébergé Flask application Web (également appartenant à moi, donc pas nécessairement publiquement visible).

1
smontanaro

Selon ce fichier Thread associé , gcsfuse par défaut ne peut pas afficher les annuaires non créés directement. J'ai essayé de faire les étapes exactes que vous avez décrites et mes répertoires n'ont pas été visibles à partir du dossier monté (les fichiers de haut niveau sont apparus correctement). La même réponse explique que l'utilisation de l'--implicit-dirs Le drapeau change ce comportement pour montrer les répertoires. J'ai créé une autre montagne avec le drapeau et les dossiers étaient visibles de Cloud Shell:

gcsfuse --implicit-dirs BUCKET_NAME ~/mountedDir

Pour monter le godet de stockage sur un répertoire, j'ai utilisé le gcsfuseDocumentation , qui passe dans des détails sur les procédures de montage. Il est important de revoir les possibles Effets secondaires À partir de l'utilisation de cet indicateur, tels que des appels d'API supplémentaires.