Buckets verschieben und umbenennen

Wenn Sie einen Bucket erstellen, wird dessen Name, Standort und das Projekt, zu dem er gehört, dauerhaft definiert. Sie können Buckets jedoch effektiv verschieben oder umbenennen:

  • Wenn sich in Ihrem alten Bucket keine Daten befinden, löschen Sie den Bucket und erstellen einen anderen Bucket mit einem neuen Namen, an einem neuen Standort oder in einem neuen Projekt.

  • Enthält der alte Bucket Daten, erstellen Sie einen neuen Bucket mit dem gewünschten Namen, Standort und/oder Projekt. Kopieren Sie dann die Daten aus dem alten Bucket in den neuen und löschen Sie den alten Bucket und dessen Inhalt. Diese Vorgehensweise wird weiter unten im Detail beschrieben.

    Wenn der neue Bucket den Namen des alten Buckets erhalten soll, müssen Sie Ihre Daten zweimal verschieben: zuerst in einen Zwischen-Bucket, in dem die Daten vorübergehend aufbewahrt werden. Dann können Sie den ursprünglichen Bucket löschen und den Bucket-Namen für den endgültigen Bucket freigeben.

So verschieben Sie Daten aus einem Bucket in einen anderen:

Schritt 1: Neuen Bucket erstellen

Console

  1. Öffnen Sie in der Google Cloud Platform Console den Cloud Storage-Browser.
    Zum Cloud Storage-Browser
  2. Klicken Sie auf Create Bucket (Bucket erstellen), um das Formular zum Erstellen eines Buckets zu öffnen.
  3. Neuer Bucket

  4. Geben Sie die Bucket-Informationen ein und klicken Sie zum Ausführen der einzelnen Schritte auf Weiter:
    • Legen Sie einen Namen fest, der die Anforderungen für Bucket-Namen erfüllt.
    • Wählen Sie eine Standardspeicherklasse für den Bucket aus. Die Standardspeicherklasse wird standardmäßig allen in den Bucket hochgeladenen Objekten zugewiesen. Wählen Sie als Nächstes einen Standort aus, an dem die Bucket-Daten dauerhaft gespeichert werden.

      Hinweis: Im Feld Schätzung monatliche Kosten im rechten Bereich finden Sie eine Schätzung der monatlichen Kosten für den Bucket auf Grundlage der ausgewählten Speicherklasse und dem ausgewählten Standort sowie der erwarteten Datengröße und den erwarteten Vorgängen.

    • Wählen Sie ein Zugriffssteuerungsmodell aus, um festzulegen, wie Sie den Zugriff auf die Objekte des Buckets steuern.
    • Optional können Sie Bucket-Labels hinzufügen, eine Aufbewahrungsrichtlinie festlegen und eine Verschlüsselungsmethode auswählen.
  5. Klicken Sie auf Fertig.

gsutil

Führen Sie folgenden gsutil mb-Befehl aus:

gsutil mb gs://[BUCKET_NAME]/

Dabei gilt:

  • [BUCKET_NAME] ist der Name, den Sie dem Bucket gemäß den Anforderungen für Namen geben möchten. Beispiel: my-bucket.

Mit den folgenden optionalen Flags können Sie das Erstellen des Buckets noch genauer steuern:

  • -p: Geben Sie das Projekt an, mit dem der Bucket verknüpft wird. Beispiel: my-project.
  • -c: Geben Sie die Standardspeicherklasse des Buckets an. Beispiel: nearline.
  • -l: Geben Sie den Standort des Buckets an. Beispiel: us-east1.
  • -b: Aktivieren Sie Nur Bucket-Richtlinie für den Bucket.

Beispiel:

  gsutil mb -p [PROJECT_NAME] -c [STORAGE_CLASS] -l [BUCKET_LOCATION] -b on gs://[BUCKET_NAME]/

Codebeispiele

C++

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.

namespace gcs = google::cloud::storage;
using ::google::cloud::StatusOr;
[](gcs::Client client, std::string bucket_name) {
  StatusOr<gcs::BucketMetadata> bucket_metadata =
      client.CreateBucket(bucket_name, gcs::BucketMetadata());

  if (!bucket_metadata) {
    throw std::runtime_error(bucket_metadata.status().message());
  }

  std::cout << "Bucket " << bucket_metadata->name() << " created."
            << "\nFull Metadata: " << *bucket_metadata << "\n";
}

C#

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C# API.

private void CreateBucket(string bucketName)
{
    var storage = StorageClient.Create();
    storage.CreateBucket(s_projectId, bucketName);
    Console.WriteLine($"Created {bucketName}.");
}

Go

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Go API.

bucket := client.Bucket(bucketName)
if err := bucket.Create(ctx, projectID, &storage.BucketAttrs{
	StorageClass: "COLDLINE",
	Location:     "asia",
}); err != nil {
	return err
}

Java

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.

Bucket bucket =
    storage.create(
        BucketInfo.newBuilder(bucketName)
            // See here for possible values: http://g.co/cloud/storage/docs/storage-classes
            .setStorageClass(StorageClass.COLDLINE)
            // Possible values: http://g.co/cloud/storage/docs/bucket-locations#location-mr
            .setLocation("asia")
            .build());

Node.js

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.

// Imports the Google Cloud client library
const {Storage} = require('@google-cloud/storage');

// Creates a client
const storage = new Storage();

/**
 * TODO(developer): Uncomment the following line before running the sample.
 */
// const bucketName = 'Name of a bucket, e.g. my-bucket';

// Creates a new bucket in the Asia region with the coldline default storage
// class. Leave the second argument blank for default settings.
//
// For default values see: https://cloud.google.com/storage/docs/locations and
// https://cloud.google.com/storage/docs/storage-classes
await storage.createBucket(bucketName, {
  location: 'ASIA',
  storageClass: 'COLDLINE',
});

console.log(`Bucket ${bucketName} created.`);

PHP

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage PHP API.

use Google\Cloud\Storage\StorageClient;

/**
 * Create a Cloud Storage Bucket.
 *
 * @param string $bucketName name of the bucket to create.
 * @param string $options options for the new bucket.
 *
 */
function create_bucket($bucketName, $options = [])
{
    $storage = new StorageClient();
    $bucket = $storage->createBucket($bucketName, $options);
    printf('Bucket created: %s' . PHP_EOL, $bucket->name());
}

Python

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.

def create_bucket(bucket_name):
    """Creates a new bucket."""
    storage_client = storage.Client()
    bucket = storage_client.create_bucket(bucket_name)
    print('Bucket {} created'.format(bucket.name))

Ruby

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Ruby API.

# project_id    = "Your Google Cloud project ID"
# bucket_name   = "Name of Google Cloud Storage bucket to create"
# location      = "Location of where to create Cloud Storage bucket"
# storage_class = "Storage class of Cloud Storage bucket"

require "google/cloud/storage"

storage = Google::Cloud::Storage.new project_id: project_id
bucket  = storage.create_bucket bucket_name,
                                location:      location,
                                storage_class: storage_class

puts "Created bucket #{bucket.name} in #{location}" +
     " with #{storage_class} class"

REST APIs

JSON API

  1. Rufen Sie ein Zugriffstoken für die Autorisierung aus dem OAuth 2.0 Playground ab. Konfigurieren Sie den Playground so, dass Ihre eigenen OAuth-Anmeldedaten verwendet werden.
  2. Erstellen Sie eine JSON-Datei, die die folgenden Informationen enthält:
  3. {
      "name": "[BUCKET_NAME]",
      "location": "[BUCKET_LOCATION]",
      "storageClass": "[STORAGE_CLASS]"
    }

    Dabei gilt:

  4. Verwenden Sie cURL, um die JSON API aufzurufen:
    curl -X POST --data-binary @[JSON_FILE_NAME].json \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "Content-Type: application/json" \
         "https://www.googleapis.com/storage/v1/b?project=[PROJECT_ID]"

    Dabei gilt:

    • [JSON_FILE_NAME] ist der Name der JSON-Datei, die Sie in Schritt 2 erstellt haben.
    • [OAUTH2_TOKEN] ist das Zugriffstoken, das Sie in Schritt 1 generiert haben.
    • [PROJECT_ID] ist die ID des Projekts, mit dem der Bucket verknüpft wird. Beispiel: my-project.

XML API

  1. Rufen Sie ein Zugriffstoken für die Autorisierung aus dem OAuth 2.0 Playground ab. Konfigurieren Sie den Playground so, dass Ihre eigenen OAuth-Anmeldedaten verwendet werden.
  2. Erstellen Sie eine XML-Datei, die die folgenden Informationen enthält:
  3. <CreateBucketConfiguration>
       <LocationConstraint>[BUCKET_LOCATION]</LocationConstraint>
       <StorageClass>[STORAGE_CLASS]</StorageClass>
    </CreateBucketConfiguration>

    Dabei gilt:

  4. Verwenden Sie cURL, um die XML API aufzurufen:
    curl -X PUT --data-binary @[XML_FILE_NAME].xml \
         -H "Authorization: Bearer [OAUTH2_TOKEN]" \
         -H "x-goog-project-id: [PROJECT_ID]" \
         "https://storage.googleapis.com/[BUCKET_NAME]"

    Dabei gilt:

    • [XML_FILE_NAME] ist der Name der XML-Datei, die Sie in Schritt 2 erstellt haben.
    • [OAUTH2_TOKEN] ist das Zugriffstoken, das Sie in Schritt 1 generiert haben.
    • [PROJECT_ID] ist die ID des Projekts, mit dem der Bucket verknüpft wird. Beispiel: my-project.
    • [BUCKET_NAME] ist der Name, den Sie dem Bucket gemäß den Anforderungen für Namen geben möchten. Beispiel: my-bucket.

Schritt 2: Dateien aus dem alten Bucket in den neuen kopieren

Console

Verwenden Sie den Cloud Storage Transfer Service in der Google Cloud Platform Console, um Daten von einem Cloud Storage-Bucket in einen anderen zu kopieren:

  1. Öffnen Sie in der Google Cloud Platform Console die Seite "Übertragung".

    Öffnen Sie die Seite Übertragung.

  2. Klicken Sie auf Übertragungsjob erstellen.
  3. Führen Sie die folgenden Schritte aus und klicken Sie dabei nach jedem Schritt auf Weiter:

    • Quelle auswählen: Verwenden Sie Google Cloud Storage-Bucket als ausgewählte Quelle und klicken Sie auf Durchsuchen, um den Bucket auszuwählen, aus dem Sie die Objekte verschieben möchten.

    • Ziel auswählen: Klicken Sie auf Durchsuchen, um den Bucket auszuwählen, in den Sie die Objekte verschieben möchten.

      Aktivieren Sie außerdem das Kästchen Quellobjekte nach Übertragung löschen.

    • Übertragung konfigurieren: Diesen Abschnitt können Sie ignorieren.

  4. Nachdem Sie alle Schritte ausgeführt haben, klicken Sie auf Erstellen.

    Damit beginnt das Kopieren der Objekte aus dem alten Bucket in den neuen. Dieser Vorgang kann einige Zeit dauern. Nachdem Sie auf Erstellen geklickt haben, können Sie die Google Cloud Platform Console jedoch verlassen.

Wenn Sie den Fortschritt der Übertragung aufrufen möchten, öffnen Sie die Seite "Übertragung" in der Google Cloud Platform Console.

Zur Seite Übertragung

gsutil

  1. Prüfen Sie, ob mindestens gsutil 4.12 installiert ist.
  2. Verwenden Sie den Befehl gsutil cp mit der Option -r, um alle Objekte rekursiv aus dem Quell-Bucket in den Ziel-Bucket zu kopieren:

    gsutil cp -r gs://[SOURCE_BUCKET]/* gs://[DESTINATION_BUCKET]

    Dabei gilt:

    • [SOURCE_BUCKET] ist der Name des ursprünglichen Buckets. Beispiel: old-bucket.
    • [DESTINATION_BUCKET] ist der Name des neuen Buckets, den Sie in Schritt 1: Neuen Bucket erstellen erstellt haben. Beispiel: my-bucket.

REST APIs

JSON API

Mit der rewrite-Methode der JSON API können Sie einzelne Datenblöcke in mehreren Anfragen kopieren. Dabei müssen Sie die rewrite-Methode in einer Schleife aufrufen, bis alle Daten übertragen wurden:

  1. Verwenden Sie cURL und die rewrite-Methode der JSON API, um Daten aus einem Quell-Bucket in einen Ziel-Bucket zu kopieren:

    curl -X POST \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Length: 0" \
    "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"

    Dabei gilt:

    • [OAUTH2_TOKEN] ist das Zugriffstoken, das Sie in Schritt 1 unter Schritt 1: Neuen Bucket erstellen erstellt haben.
    • [SOURCE_BUCKET] ist der Name des ursprünglichen Buckets. Beispiel: old-bucket.
    • [OBJECT_NAME] ist der Name des Objekts, das Sie kopieren möchten. Beispiel: pets/dog.png.
    • [DESTINATION_BUCKET] ist der Name des neuen Buckets, den Sie in Schritt 1: Neuen Bucket erstellen erstellt haben. Beispiel: my-bucket.

    Wenn das Objekt beispielsweise 10 GB groß ist, sieht die Antwort auf diese Anfrage ungefähr so aus:

    {
    "kind": "storage#rewriteResponse",
    "totalBytesRewritten": 1048576,
    "objectSize": 10000000000,
    "done": false,
    "rewriteToken": [TOKEN_VALUE]
    }
  2. Verwenden Sie das rewriteToken in einer nachfolgenden Anfrage, um weitere Daten zu kopieren:

    curl -X POST \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    -H "Content-Length: 0" \
    -d '{"rewriteToken": "[TOKEN_VALUE]"}' \
    "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]/rewriteTo/b/[DESTINATION_BUCKET]/o/[OBJECT_NAME]"

    Dabei gilt:

    • [OAUTH2_TOKEN] ist das Zugriffstoken, das Sie in Schritt 1 unter Schritt 1: Neuen Bucket erstellen erstellt haben.
    • [TOKEN_VALUE] ist der in Schritt 1 zurückgegebene rewriteToken-Wert.
    • [SOURCE_BUCKET] ist der Name des ursprünglichen Buckets. Beispiel: old-bucket.
    • [OBJECT_NAME] ist der Name des Objekts, das Sie kopieren möchten. Beispiel: pets/bunny.png.
    • [DESTINATION_BUCKET] ist der Name des neuen Buckets, den Sie in Schritt 1: Neuen Bucket erstellen erstellt haben. Beispiel: my-bucket.

Wenn alle Daten kopiert wurden, ist in der letzten Antwort das Attribut done auf true gesetzt und kein rewriteToken-Attribut vorhanden. Außerdem sind die Metadaten des kopierten Objekts im Attribut resource enthalten.

{
  "kind": "storage#rewriteResponse",
  "totalBytesRewritten": 10000000000,
  "objectSize": 10000000000,
  "done": true,
  "resource": objects Resource
}

Schritt 3: Objekte aus dem alten Bucket löschen

Console

Zum Löschen der Objekte aus dem alten Bucket müssen Sie nichts tun: Alte Objekte werden beim Kopieren von Objekten mit dem Übertragungsdienst automatisch gelöscht, vorausgesetzt, dass Sie das Kästchen "Quellobjekte nach Übertragung löschen" angeklickt haben.

gsutil

Verwenden Sie den Befehl gsutil rm mit der Option -r, um alle Objekte aus dem Quell-Bucket sowie den Quell-Bucket selbst rekursiv zu löschen:

gsutil rm -r gs://[SOURCE_BUCKET]

Dabei ist [SOURCE_BUCKET] der Name des ursprünglichen Buckets. Beispiel: old-bucket.

Sie können auch die Objekte löschen und den Quell-Bucket beibehalten:

gsutil rm -a gs://[SOURCE_BUCKET]/**

REST APIs

JSON API

  • Verwenden Sie cURL und die delete-Methode der JSON API, um die ursprüngliche Version der Daten mit dem folgenden Befehl zu entfernen:

    curl -X DELETE \
    -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    "https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]"

    Dabei gilt:

    • [OAUTH2_TOKEN] ist das Zugriffstoken, das Sie in Schritt 1 unter Schritt 1: Neuen Bucket erstellen erstellt haben.
    • [SOURCE_BUCKET] ist der Name des ursprünglichen Buckets. Beispiel: old-bucket.
    • [OBJECT_NAME] ist der Name des Objekts, das Sie löschen möchten. Beispiel: pets/dog.png.

Bei Erfolg gibt die Methode eine leere Antwort zurück.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...