Переместить каталог в Google Bucket - PullRequest
0 голосов
/ 29 мая 2020

Как мы можем переместить всю папку (внутри папки тоже есть много подкаталогов) в Ведро облака Google? Может ли кто-нибудь помочь в этом.

Ответы [ 2 ]

1 голос
/ 31 мая 2020

Используйте флаг -r в команде gsutil copy.

Из документации gsutil :

Если вы хотите скопировать все дерево каталогов, вам необходимо использовать параметр -r. Например, чтобы загрузить дерево каталогов «dir»:

gsutil cp -r mydir gs://my-bucket
0 голосов
/ 02 июня 2020

Клиент облачного хранилища для библиотеки C # не поддерживает загрузку папок, вы должны создать функцию (syn c / asynchronous), которая получает все файлы / подпапки внутри вашей папки и загружает каждый файл.

Я нашел код итератора папки в этом Microsoft Ссылка В моем примере кода я добавил библиотеку GCS в загрузку файлов , создавать структуру папок не обязательно.

Например

// GCS dependencies
using Google.Apis.Storage.v1;
using Google.Apis.Storage.v1.Data;
using Google.Cloud.Storage.V1;
using Storage;
// GCS dependencies

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Security.Cryptography;



static void WalkDirectoryTree(System.IO.DirectoryInfo root)
   {
       System.IO.FileInfo[] files = null;
       System.IO.DirectoryInfo[] subDirs = null;

       // initialize the GCS client library
       var storage = StorageClient.Create();
       // use this variable to define the upload bucket, please use your bucket name
       var bucketName= Myawesomebucket
       try
       {
           files = root.GetFiles("*.*");
       }

       catch (UnauthorizedAccessException e)
       {

       }

       catch (System.IO.DirectoryNotFoundException e)
       {
           Console.WriteLine(e.Message);
       }

       if (files != null)
       {
           foreach (System.IO.FileInfo fi in files)
           {
               // If we
               // want to open, delete or modify the file, then
               // a try-catch block is required here to handle the case
               // where the file has been deleted since the call to TraverseTree().
               Console.WriteLine(fi.FullName);

               // this section is used to upload files to GCS
               // the object name includ folder/subfolder structure
               objectName = objectName ?? Path.GetFileName(fi.FullPath);

               // upload the object to the bucket
               storage.UploadObject(bucketName, objectName, null, f);
               Console.WriteLine($"Uploaded {objectName}.");

           }

           // Now find all the subdirectories under this directory.
           subDirs = root.GetDirectories();

           foreach (System.IO.DirectoryInfo dirInfo in subDirs)
           {
               // Resursive call for each subdirectory.
               WalkDirectoryTree(dirInfo);
           }
       }
   } 
...