Buckets verschieben und umbenennen

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

  • Wenn der alte Bucket keine Daten enthält, löschen Sie ihn einfach. Sie können dann einen anderen Bucket mit einem neuen Namen an einem neuen Speicherort bzw. in einem neuen Projekt erstellen.

  • Wenn der alte Bucket Daten enthält, erstellen Sie einen neuen Bucket mit dem gewünschten Namen, Speicherort und/oder Projekt. Kopieren Sie dann die Daten aus dem alten Bucket in den neuen Bucket 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

Konsole

  1. Öffnen Sie in der Google Cloud Platform Console den Cloud Storage-Browser.
    Cloud Storage-Browser öffnen
  2. Klicken Sie auf Bucket erstellen.
  3. Legen Sie einen Namen fest, der die Anforderungen für Bucket-Namen erfüllt.
  4. Wählen Sie eine Standardspeicherklasse für den Bucket aus. Die Standardspeicherklasse wird standardmäßig allen in den Bucket hochgeladenen Objekten zugewiesen.

    Hinweis: Klicken Sie auf Speicherklassen vergleichen, um Speicherklassen und monatliche Kostenschätzungen zu vergleichen.

  5. Geben Sie einen Standort für die Speicherung der Bucket-Daten an.
  6. Neuer Bucket

  7. Klicken Sie auf Erstellen.

gsutil

Verwenden Sie den Befehl gsutil mb und ersetzen Sie [VALUES_IN_BRACKETS] durch die entsprechenden Werte:

gsutil mb gs://[BUCKET_NAME]/

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

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.
 *
 * @return Google\Cloud\Storage\Bucket the newly created 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

Informationen zu verfügbaren Speicherklassen, die Sie als Standard für einen Bucket festlegen können, finden Sie unter Speicherklassen.

  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. Ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:
  3. {
      "name": "[BUCKET_NAME]",
      "location": "[BUCKET_LOCATION]",
      "storageClass": "[STORAGE_CLASS]"
    }
  4. Verwenden Sie cURL, um die JSON API aufzurufen. Ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:
    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]"

XML API

Informationen zu verfügbaren Speicherklassen, die Sie als Standard für einen Bucket festlegen können, finden Sie unter Speicherklassen.

  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. Ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:
  3. <CreateBucketConfiguration>
       <LocationConstraint>[BUCKET_LOCATION]</LocationConstraint>
       <StorageClass>[STORAGE_CLASS]</StorageClass>
    </CreateBucketConfiguration>
  4. Verwenden Sie cURL, um die XML API aufzurufen. Ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:
    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]"

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

Konsole

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 "Transfer".

    Zur Seite Transfer

  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 Quelle und klicken Sie auf Durchsuchen, um den Bucket zu suchen und auszuwählen, aus dem Sie Dateien verschieben möchten.

    • Ziel auswählen: Klicken Sie auf Durchsuchen und wählen Sie den Bucket aus, in den Sie die Dateien 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 Dateien 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 "Transfer" in der Google Cloud Platform Console.

Zur Seite Transfer

gsutil

  1. Es muss mindestens gsutil 4.12 installiert sein.
  2. Verwenden Sie den gsutil cp-Befehl mit der Option -r, um alle Dateien rekursiv aus dem Quell-Bucket in den Ziel-Bucket zu kopieren. Ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:

    gsutil cp -r gs://[SOURCE_BUCKET]/* gs://[DESTINATION_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. Ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:
  2. 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]"
    

    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]
    }
    
  3. Verwenden Sie das rewriteToken in der nächsten Anfrage, um weitere Daten zu kopieren, und ersetzen Sie [VALUES_IN_BRACKETS] durch die entsprechenden Werte:
  4. 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]"
    

    Wenn alle Daten kopiert wurden, ist in der letzten Antwort das Attribut done auf true gesetzt. Es gibt kein rewriteToken-Attribut und die Metadaten des Zielobjekts sind im Attribut resource angegeben.

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

Schritt 3: Dateien aus dem alten Bucket löschen

Konsole

Sie müssen die Dateien nicht extra aus dem alten Bucket löschen, denn beim Kopieren von Dateien mit dem Transfer Service werden alte Dateien automatisch gelöscht (sofern Sie das Kästchen "Quellobjekte nach Transfer löschen" aktiviert haben).

gsutil

Verwenden Sie den Befehl gsutil rm mit der Option -r, um alle Dateien rekursiv aus dem Quell-Bucket zu entfernen und diesen Bucket zu löschen. Ersetzen Sie [VALUES_IN_BRACKETS] dabei durch die entsprechenden Werte:

gsutil rm -r gs://[SOURCE_BUCKET]

Hiermit können Sie die Dateien löschen und den Quell-Bucket beibehalten:

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

REST APIs

JSON API

  1. Verwenden Sie cURL und die Methode delete der JSON API, um die ursprüngliche Version Ihrer Daten mit dem folgenden Befehl zu entfernen. Ersetzen Sie dabei [VALUES_IN_BRACKETS] durch die entsprechenden Werte:
    curl -X DELETE -H "Authorization: Bearer [OAUTH2_TOKEN]" \
    https://www.googleapis.com/storage/v1/b/[SOURCE_BUCKET]/o/[OBJECT_NAME]

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...