Cartelle

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.

Questa pagina illustra le cartelle di Cloud Storage e le loro differenze negli strumenti di Cloud Storage.

Panoramica

Cloud Storage utilizza uno spazio dei nomi semplice, ossia le cartelle non esistono all'interno di Cloud Storage. Se crei un oggetto denominato folder1/file.txt nel bucket your-bucket, il percorso dell'oggetto è your-bucket/folder1/file.txt, ma non è presente alcuna cartella denominata folder1, ma la stringa folder1 fa parte del nome dell'oggetto.

Tuttavia, la console Google Cloud e gsutil forniscono l'illusione di una struttura di file gerarchica:

  • La console Google Cloud crea una rappresentazione visiva delle cartelle che sono simili a un browser di file locale.

  • gsutil simula l'esperienza tipica della directory a riga di comando utilizzando una serie di regole.

/storage/images/folders.svg

Strumenti

Fai clic sulle schede di seguito per vedere come ciascuno strumento gestisce le cartelle.

console

In Google Cloud Console, puoi creare una cartella vuota in un bucket o caricare una cartella esistente.

Quando carichi una cartella esistente, il nome della cartella diventa parte del percorso per tutti gli oggetti contenuti al suo interno. Nel caricamento vengono incluse anche tutte le sottocartelle e gli oggetti che contengono.

Per creare una cartella:

  1. In Google Cloud Console, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Vai al bucket.

  3. Fai clic su Crea cartella per creare una nuova cartella vuota o su Carica cartella per caricare una cartella esistente.

gsutil

Per ottenere l'illusione di una struttura di file gerarchica, gsutil applica le seguenti regole per determinare se l'URL di destinazione in un comando debba essere considerato come un nome di oggetto o una cartella:

  1. Se l'URL di destinazione termina con un carattere /, gsutil tratta l'URL di destinazione come una cartella. Ad esempio, considera il seguente comando dove your-file è il nome di un file:

    gsutil cp your-file gs://your-bucket/abc/

    Di conseguenza, gsutil crea un oggetto denominato gs://your-bucket/abc/your-file.

  2. Se copi più file di origine in un URL di destinazione, gsutil considera l'URL di destinazione come una cartella. Ad esempio, considera il seguente comando dove your-dir è una cartella contenente file come file1 e file2:

    gsutil cp -r your-dir gs://your-bucket/abc

    Di conseguenza, gsutil crea gli oggetti gs://your-bucket/abc/your-dir/file1 e gs://your-bucket/abc/your-dir/file2.

  3. Se non si applica nessuna delle regole precedenti, gsutil controlla gli oggetti nel bucket per determinare se l'URL di destinazione è un nome di oggetto o una cartella. Ad esempio, considera il seguente comando dove your-file è il nome di un file:

    gsutil cp your-file gs://your-bucket/abc

    gsutil invia una richiesta di elenco degli oggetti per your-bucket, utilizzando il delimitatore / e il prefisso=abc, per determinare se sono presenti oggetti nel bucket il cui percorso inizia con gs://your-bucket/abc/. In questo caso, gsutil tratta gs://your-bucket/abc come un nome di cartella, e il comando precedente crea l'oggetto gs://your-bucket/abc/your-file. Altrimenti, gsutil crea l'oggetto gs://your-bucket/abc.

L'approccio basato su regole di gsutil differisce dal modo in cui funzionano molti strumenti, che creano oggetti a 0 byte per contrassegnare l'esistenza delle cartelle. gsutil comprende diverse convenzioni utilizzate da tali strumenti, come la convenzione di aggiungere _$folder$ alla fine del nome dell'oggetto a 0 byte, ma gsutil non richiede tali oggetti indicatore per implementare un comportamento di denominazione coerente con i comandi UNIX.

Nuovi tentativi e denominazione

Se attivi i tentativi automatici tramite gsutil, potresti riscontrare un problema per cui un primo tentativo copia solo un sottoinsieme di file, mentre i tentativi successivi incontrano una cartella di destinazione già esistente e assegnano un nome errato agli oggetti.

Ad esempio, considera il seguente comando, dove sono presenti sottocartelle sotto your-dir/ come dir1 e dir2, ed entrambe le sottocartelle contengono il file abc:

gsutil cp -r ./your-dir gs://your-bucket/new

Se gs://your-bucket/new non esiste ancora, gsutil crea i seguenti oggetti al primo tentativo riuscito:

gs://your-bucket/new/dir1/abc
gs://your-bucket/new/dir2/abc

Al successivo tentativo riuscito, gsutil crea i seguenti oggetti:

gs://your-bucket/new/your-dir/dir1/abc
gs://your-bucket/new/your-dir/dir2/abc

Per fare in modo che gsutil funzioni in modo coerente a ogni tentativo, prova quanto segue:

  1. Aggiungi una barra alla fine dell'URL di destinazione in modo che gsutil lo tratti sempre come una cartella.

  2. Utilizza gsutil rsync. Poiché rsync non utilizza le regole di denominazione delle cartelle definite da Unix cp, funziona in modo coerente se la sottocartella di destinazione esiste o meno.

  3. Se gsutil rsync non funziona, crea un oggetto segnaposto per stabilire che la destinazione sia una cartella. Ad esempio:

    gsutil cp some-file gs://your-bucket/new/placeholder

    Con l'oggetto segnaposto presente, l'esecuzione del comando gsutil cp -r sopra considera in modo coerente gs://your-bucket/new come una cartella. Quando hai almeno uno degli oggetti in gs://your-bucket/new, puoi eliminare l'oggetto segnaposto e continuare i caricamenti.

Per saperne di più su come vengono creati i nomi, vedi gsutil help cp.

Note aggiuntive

  • Non puoi creare un oggetto a zero byte per simulare una cartella vuota di gsutil.

  • Se utilizzi script per creare percorsi di file combinando i percorsi secondari, tieni presente che perché / è solo un carattere che si trova nel nome dell'oggetto, gsutil Interpreta gs://my-bucket/folder/ come un oggetto diverso da gs://my-bucket//folder.

Considerazioni sui prezzi

Uno svantaggio dell'approccio di denominazione di gsutil è che richiede un elenco aggiuntivo di oggetti prima di eseguire un comando cp o mv, come una copia ricorrente di una cartella nel cloud. Tuttavia, queste schede sono relativamente economiche, perché utilizzano parametri delimitatore e prefisso per limitare i dati dei risultati. gsutil esegue inoltre una sola richiesta di elenco degli oggetti per comando cp o mv, quindi ammortizza il costo tra tutti gli oggetti trasferiti.

API REST

API JSON

Le cartelle non esistono nell'API JSON, ma puoi restringere gli oggetti elencati utilizzando i parametri query prefix e delimiter.

Ad esempio, per elencare tutti gli oggetti nel bucket my-bucket con il prefisso folder/subfolder/, effettua una richiesta di elencazione degli oggetti utilizzando questo URL:

"https://storage.googleapis.com/storage/v1/b/my-bucket/o?prefix=folder/subfolder/"

API XML

Le cartelle non esistono nell'API XML, ma puoi restringere gli oggetti elencati utilizzando i parametri di query prefix e delimiter.

Ad esempio, per elencare tutti gli oggetti nel bucket my-bucket con il prefisso folder/subfolder/, effettua una richiesta di elencazione degli oggetti utilizzando questo URL:

"https://storage.googleapis.com/my-bucket?prefix=folder/subfolder/"

Passaggi successivi