Удаление и восстановление большого двоичного объекта с помощью Java
В этой статье показано, как удалить большие двоичные объекты с помощью клиентской библиотеки служба хранилища Azure для Java. Если вы включили обратимое удаление для больших двоичных объектов, вы можете восстановить удаленные большие двоичные объекты в течение периода хранения.
Необходимые компоненты
- В этой статье предполагается, что у вас уже есть проект, настроенный для работы с клиентской библиотекой Хранилище BLOB-объектов Azure для Java. Сведения о настройке проекта, включая установку пакетов, добавление
import
директив и создание авторизованного клиентского объекта, см. в статье "Начало работы с служба хранилища Azure и Java". - Механизм авторизации должен иметь разрешения на удаление большого двоичного объекта или восстановление обратимого удаленного большого двоичного объекта. Дополнительные сведения см. в руководстве по авторизации для следующих операций REST API:
Удаление большого двоичного объекта
Чтобы удалить большой двоичный объект, вызовите один из следующих методов:
В следующем примере удаляется большой двоичный объект:
public void deleteBlob(BlobClient blobClient) {
blobClient.delete();
}
Если большой двоичный объект содержит связанные моментальные снимки, необходимо удалить все его моментальные снимки, чтобы удалить большой двоичный объект. В следующем примере удаляется большой двоичный объект и его моментальные снимки с ответом:
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());
}
}
Чтобы удалить только моментальные снимки, а не сам большой двоичный объект, можно передать параметр DeleteSnapshotsOptionType.ONLY
.
Восстановление удаленного BLOB-объекта
Обратимое удаление защищает BLOB-объект и его версии, а также моментальные снимки и метаданные от случайного удаления или перезаписи, сохраняя удаленные данные в системе в течение заданного периода времени. В течение срока хранения BLOB-объект можно восстановить до его состояния на момент удаления. По истечении срока хранения BLOB-объект удаляется окончательно. Дополнительные сведения об обратимом удалении BLOB-объектов см. в статье Обратимое удаление BLOB-объектов.
Клиентские библиотеки службы хранилища Azure позволяют восстановить обратимо удаленный BLOB-объект или моментальный снимок.
Восстановление обратимого удаленного большого двоичного объекта зависит от того, включена ли у вашей учетной записи хранения управление версиями БОЛЬШИХ двоичных объектов. Дополнительные сведения об управлении версиями BLOB-объектов см. в статье Управление версиями BLOB-объектов. См. один из следующих разделов в зависимости от вашего сценария:
Восстановление обратимо удаленных объектов, если управление версиями отключено
Чтобы восстановить удаленные BLOB-объекты, вызовите следующий метод:
Этот метод восстанавливает содержимое и метаданные обратимого удаленного большого двоичного объекта и всех связанных обратимо удаленных моментальных снимков. Вызов этого метода для большого двоичного объекта, который не был удален, не имеет никакого эффекта.
public void restoreBlob(BlobClient blobClient) {
blobClient.undelete();
}
Восстановление обратимо удаленных объектов при включении управления версиями
Если учетная запись хранения настроена для включения управления версиями BLOB-объектов, удаление большого двоичного объекта приводит к тому, что текущая версия большого двоичного объекта станет предыдущей. Чтобы восстановить обратимо удаленный BLOB-объект при включении управления версиями, скопируйте предыдущую версию в основной BLOB-объект. Можно использовать следующий метод:
Этот метод восстанавливает содержимое и метаданные обратимого удаленного большого двоичного объекта и всех связанных обратимо удаленных моментальных снимков. Вызов этого метода для большого двоичного объекта, который не был удален, не имеет никакого эффекта.
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());
}
Восстановление обратимо удаленных больших двоичных объектов и каталогов (иерархическое пространство имен)
Внимание
Сведения в этом разделе применимы только к учетным записям с иерархическим пространством имен.
Чтобы начать работу, откройте файл pom.xml в текстовом редакторе. Добавьте приведенный ниже элемент зависимости в группу зависимостей.
<dependency> <groupId>com.azure</groupId> <artifactId>azure-storage-file-datalake</artifactId> <version>12.6.0</version> </dependency>
Затем добавьте эти операторы импорта в файл кода:
Put imports here
Следующий фрагмент кода восстанавливает обратимо удаленный файл с именем
my-file
.Этот метод требует предварительного создания экземпляра DataLakeServiceClient. Инструкции по созданию экземпляра DataLakeServiceClient см. в разделе Подключение к учетной записи.
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); }
При переименовании каталога, содержащего обратимо удаленные элементы, эти элементы будут отключены от каталога. Чтобы восстановить эти элементы, необходимо восстановить исходное имя каталога или создать отдельный каталог с именем исходного каталога. В противном случае вы получите ошибку при попытке восстановить эти обратимо удаленные элементы.
Ресурсы
Дополнительные сведения об удалении больших двоичных объектов и восстановлении удаленных BLOB-объектов с помощью клиентской библиотеки Хранилище BLOB-объектов Azure для Java см. в следующих ресурсах.
Операции REST API
Пакет SDK Azure для Java содержит библиотеки, которые создаются на основе REST API Azure, что позволяет взаимодействовать с операциями REST API через знакомые парадигмы Java. Методы клиентской библиотеки для удаления больших двоичных объектов и восстановления удаленных BLOB-объектов используют следующие операции REST API:
- Удаление больших двоичных объектов (REST API)
- Восстановление больших двоичных объектов (REST API)
Примеры кода
Ресурсы клиентской библиотеки
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по