Partager via


Supprimer et restaurer un blob avec Java

Cet article explique comment supprimer des blobs avec la bibliothèque de client du Stockage Azure pour Java. Si vous avez activé la suppression réversible pour les objets blob, vous pouvez restaurer les objets blob supprimés pendant la période de rétention.

Prérequis

  • Cet article suppose que vous disposez déjà d'un projet configuré pour fonctionner avec la bibliothèque client Stockage Blob Azure pour Java. Pour en savoir plus sur la configuration de votre projet, y compris l’installation de packages, l’ajout de directives d’import et la création d’un objet client autorisé, consultez Prise en main du Stockage Azure et de Java.
  • Le mécanisme d'autorisation doit avoir des autorisations pour supprimer un blob ou pour restaurer un blob supprimé de manière réversible. Pour plus d’informations, consultez les conseils d’autorisation pour les opérations d’API REST suivantes :

Supprimer un objet blob

Pour supprimer un blob, appelez une de ces méthodes :

L’exemple suivant supprime un blob :

public void deleteBlob(BlobClient blobClient) {
    blobClient.delete();
}

Si le blob a des instantanés associés, vous devez supprimer tous ses instantanés pour le supprimer. L’exemple suivant supprime un blob et ses instantanés avec une réponse :

public void deleteBlobWithSnapshots(BlobClient blobClient) {
    Response<Boolean> response = blobClient.deleteIfExistsWithResponse(DeleteSnapshotsOptionType.INCLUDE, null,
            null,
            new Context("key", "value"));
    if (response.getStatusCode() == 404) {
        System.out.println("Blob does not exist");
    } else {
        System.out.printf("Delete blob completed with status %d%n", response.getStatusCode());
    }
}

Pour supprimer uniquement les instantanés et non le blob lui-même, vous pouvez passer le paramètre DeleteSnapshotsOptionType.ONLY.

Restaurer un objet blob supprimé

La suppression réversible d’objets blob protège un objet blob et ses versions, instantanés et métadonnées contre les suppressions ou les remplacements accidentels en conservant les données supprimées dans le système pendant un laps de temps spécifié. Pendant la période de rétention, vous pouvez restaurer l’objet blob à son état au moment de la suppression. Une fois la période de conservation expirée, l’objet est supprimé définitivement. Pour plus d’informations sur la suppression réversible d’objets blob, consultez Suppression réversible pour les objets blob.

Vous pouvez utiliser les bibliothèques de client de Stockage Azure pour restaurer un objet blob ou une capture instantanée supprimés de manière réversible.

La façon de restaurer un objet blob supprimé de manière réversible dépend de l’activation du contrôle de version d’objets blob de votre compte de stockage. Pour plus d’informations sur la gestion de versions des objets blob, consultez Gestion de versions des objets blob. Consultez l’une des sections suivantes en fonction de votre scénario :

Restaurer des objets supprimés de manière réversible quand le contrôle de version est désactivé

Pour restaurer des objets blob supprimés, appelez la méthode suivante :

Cette méthode restaure le contenu et les métadonnées d’un blob supprimé de manière réversible et de tous les instantanés associés supprimés de manière réversible. L’appel de cette méthode pour un blob qui n’a pas été supprimé est sans effet.

public void restoreBlob(BlobClient blobClient) {
    blobClient.undelete();
}

Restaurer des objets supprimés de manière réversible quand le versioning est activé

Si un compte de stockage est configuré pour activer le contrôle de version de blobs, la suppression d’un blob définit la version actuelle du blob comme version précédente. Pour restaurer un blob supprimé de manière réversible quand le versioning est activé, copiez une version précédente sur le blob de base. Vous pouvez utiliser la méthode suivante :

Cette méthode restaure le contenu et les métadonnées d’un blob supprimé de manière réversible et de tous les instantanés associés supprimés de manière réversible. L’appel de cette méthode pour un blob qui n’a pas été supprimé est sans effet.

public void restoreBlobVersion(BlobContainerClient containerClient, BlobClient blobClient){
    // List blobs in this container that match the prefix
    // Include versions in the listing
    ListBlobsOptions options = new ListBlobsOptions()
            .setPrefix(blobClient.getBlobName())
            .setDetails(new BlobListDetails()
                    .setRetrieveVersions(true));
    Iterator<BlobItem> blobItem = containerClient.listBlobs(options, null).iterator();
    List<String> blobVersions = new ArrayList<>();
    while (blobItem.hasNext()) {
        blobVersions.add(blobItem.next().getVersionId());
    }

    // Sort the list of blob versions and get the most recent version ID
    Collections.sort(blobVersions, Collections.reverseOrder());
    String latestVersion = blobVersions.get(0);

    // Get a client object with the name of the deleted blob and the specified version
    BlobClient blob = containerClient.getBlobVersionClient("sampleBlob.txt", latestVersion);

    // Restore the most recent version by copying it to the base blob
    blobClient.copyFromUrl(blob.getBlobUrl());
}

Restaurer des objets blob et des répertoires supprimés de manière réversible (espace de noms hiérarchique)

Important

Cette section s’applique uniquement aux comptes qui ont un espace de noms hiérarchique.

  1. Pour commencer, ouvrez le fichier pom.xml dans votre éditeur de texte. Ajoutez l’élément dépendance suivant au groupe de dépendances.

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-storage-file-datalake</artifactId>
      <version>12.6.0</version>
    </dependency>
    
  2. Ajoutez ensuite ces instructions Imports à votre fichier de code.

    Put imports here
    
  3. L’extrait de code suivant restaure le fichier supprimé de manière réversible qui est nommé my-file.

    Cette méthode suppose que vous avez créé une instance DataLakeServiceClient. Pour savoir comment créer une instance DataLakeServiceClient, consultez Se connecter au compte.

    
    public void RestoreFile(DataLakeServiceClient serviceClient){
    
        DataLakeFileSystemClient fileSystemClient =
            serviceClient.getFileSystemClient("my-container");
    
        DataLakeFileClient fileClient =
            fileSystemClient.getFileClient("my-file");
    
        String deletionId = null;
    
        for (PathDeletedItem item : fileSystemClient.listDeletedPaths()) {
    
            if (item.getName().equals(fileClient.getFilePath())) {
               deletionId = item.getDeletionId();
            }
        }
    
        fileSystemClient.restorePath(fileClient.getFilePath(), deletionId);
     }
    
    

    Si vous renommez le répertoire qui contient les éléments supprimés de manière réversible, ces éléments sont déconnectés du répertoire. Si vous souhaitez restaurer ces éléments, vous devez rétablir le nom d’origine du répertoire ou créer un répertoire distinct qui utilise le nom de répertoire d’origine. Dans le cas contraire, un message d’erreur apparaîtra lorsque vous tenterez de restaurer ces éléments supprimés de manière réversible.

Ressources

Pour en savoir plus sur la suppression d’objets blob et la restauration d’objets blob supprimés en utilisant la bibliothèque de client du Stockage Blob Azure pour Java, consultez les ressources suivantes.

Opérations de l'API REST

Le Kit de développement logiciel (SDK) Azure pour Java contient des bibliothèques qui s'appuient sur l'API REST Azure, vous permettant d’interagir avec les opérations de l’API REST par le biais de paradigmes Java familiers. Les méthodes de la bibliothèque de client pour supprimer des objets blob et restaurer des objets blob supprimés utilisent les opérations d’API REST suivantes :

Exemples de code

Ressources de bibliothèque cliente

Voir aussi