Скопируйте большой файл между учетными записями Azure Gen 2, используя код C # - PullRequest
0 голосов
/ 30 января 2019

У нас есть хранилище файлов в учетной записи хранения Azure поколения 2

Мы используем подход API для создания, удаления и чтения файлов [как упомянуто здесь Чтение файла ]

Мы пытаемся скопировать файл из одной учетной записи хранения в другую, используя подход API.Может кто-нибудь предложить быстрый подход для достижения этого?

Примечание:

  • Я ищу подход кода в c # без AzCopy

  • В Быт 1 есть Библиотека Движений Данных, но я ищу Быт 2

Ответы [ 3 ]

0 голосов
/ 30 января 2019

AzCopy - это утилита командной строки, предназначенная для копирования данных в / из хранилища BLOB-объектов, файлов и таблиц Microsoft Azure с использованием простых команд, разработанных для оптимальной производительности.Вы можете копировать данные между файловой системой и учетной записью хранения или между учетными записями хранения.

Примечание : - Вы можете загрузить Azcopy для окон по упомянутой ссылке

Для копирования одного большого двоичного объекта из одной учетной записи хранения в другое хранилище учетных записей вы можете использовать что-то вроде следующего:

AzCopy /Source:https://sourceaccount.blob.core.windows.net/mycontainer1 /Dest:https://destaccount.blob.core.windows.net/mycontainer2 /SourceKey:key1 /DestKey:key2 /Pattern:abc.txt

Копирование всех больших двоичных объектов в контейнере в другую учетную запись хранения

AzCopy /Source:https://sourceaccount.blob.core.windows.net/mycontainer1 
/Dest:https://destaccount.blob.core.windows.net/mycontainer2 /SourceKey:key1 /DestKey:key2 /S

Пример, который я привел, для платформы Windows, аналогичную операцию вы можете выполнять и в Linux.Дайте мне знать, если вам нужна помощь по этому вопросу.

0 голосов
/ 26 апреля 2019

На самом деле, очень трудно найти работающее решение, потому что официальная документация устарела и там нет актуальных примеров.

Устаревший способ

Здесь можно найти устаревший пример работы с контейнерами BLOB-объектов: https://docs.microsoft.com/en-us/azure/storage/blobs/storage-quickstart-blobs-dotnet?tabs=windows

В этом примере используется WindowsAzure.Storage пакет NuGet, который был переименован в Microsoft.Azure.Storage.* и разделен на отдельные пакеты.

Современное решение

В настоящее время я работаю над развертыванием статического SPA в хранилище BLOB-объектов Azure.У него есть очень приятная функция «Статический веб-сайт», которая обслуживает файлы.

Существует рабочий пример, который можно использовать для копирования всего содержимого из одного контейнера больших двоичных объектов в другой.Пожалуйста, рассмотрите это как подсказку (не готово к производству).

Все, что вам нужно, это:

  • Иметь существующий контейнер BLOB-объектов.
  • Установить Microsoft.Azure.Storage.DataMovement NuGetпакет.
  • Укажите правильную строку подключения.

Вот код:

// I left fully qualified names of the types to make example clear.

var connectionString = "Connection string from `Azure Portal > Storage account > Access Keys`";

var sourceContainerName = "<source>";
var destinationContainerName = "<destination>";

var storageAccount = Microsoft.Azure.Storage.CloudStorageAccount.Parse(connectionString);

var client = storageAccount.CreateCloudBlobClient();

var sourceContainer = client.GetContainerReference(sourceContainerName);

var destinationContainer = client.GetContainerReference(destinationContainerName);
// Create destination container if needed
await destinationContainer.CreateIfNotExistsAsync();

var sourceBlobDir = sourceContainer.GetDirectoryReference(""); // Root directory
var destBlobDir = destinationContainer.GetDirectoryReference("");

// Use UploadOptions to set ContentType of destination CloudBlob
var options = new Microsoft.Azure.Storage.DataMovement.CopyDirectoryOptions
{
    Recursive = true,
};

var context = new Microsoft.Azure.Storage.DataMovement.DirectoryTransferContext();

// Perform the copy
var transferStatus = await Microsoft.Azure.Storage.DataMovement.TransferManager
    .CopyDirectoryAsync(sourceBlobDir, destBlobDir, true, options, context);
0 голосов
/ 30 января 2019

вы можете использовать AzCopy для передачи данных.Вы можете копировать данные между файловой системой и учетной записью хранения или между учетными записями хранения с помощью AzCopy.

Подробнее о том, как использовать AzCopy, вы можете обратиться к этому официальному doc .В этом документе есть ссылка для скачивания и учебные пособия.

Обновление: О передаче файлов между общими файлами вы можете обратиться к этому коду:

AzCopy /Source:https://myaccount1.file.core.windows.net/myfileshare1/ /Dest:https://myaccount2.file.core.windows.net/myfileshare2/ /SourceKey:key1 /DestKey:key2 /S

Прочее оСкопируйте файлы в хранилище файлов, вы можете обратиться к doc .

Если у вас остались другие вопросы, пожалуйста, дайте мне знать.Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...