Google GSutil создать папку
Как создать новую папку внутри корзины в облачном хранилище Google с помощью команды gsutil?
Я пытался использовать ту же команду при создании корзины, но все равно получил ошибку
gsutil mb -l us-east1 gs://my-awesome-bucket/new_folder/
Спасибо!
5 ответов
Концепция каталога является абстрактной в Google Cloud Storage. Из документов ( Как работают подкаталоги):
gsutil создает иллюзию иерархического дерева файлов поверх "плоского" пространства имен, поддерживаемого службой Google Cloud Storage. Для сервиса объект gs://your-bucket/abc/def.txt - это просто объект, в имени которого есть символы "/". Нет каталога "abc"; просто один объект с заданным именем.
Таким образом, вы не можете "создать" каталог, как в традиционной файловой системе.
Если вам ясно, какие папки и объекты уже существуют в корзине, вы можете создать новую "папку" с помощью gsutil, скопировав объект в папку.
>mkdir test
>touch test/file1
>gsutil cp -r test gs://my-bucket
Copying file://test\file1 [Content-
Type=application/octet-stream]...
/ [1 files][ 0.0 B/ 0.0 B]
Operation completed over 1 objects.
>gsutil ls gs://my-bucket
gs://my-bucket/test/
>gsutil ls gs://ogh-migration-bucket/test
gs://my-bucket/test/file1
Это не будет работать, если локальный каталог пуст.
Проще говоря:
>touch file2
>gsutil cp file2 gs://my-bucket/new-folder/
Copying file://test\file2 [Content- ...
>gsutil ls gs://my-bucket/new-folder
gs://my-bucket/new-folder/file2
Помните о возможном присвоении имен в подкаталоге Surprising Destination. Например, если целевой каталог уже существует как объект. Для автоматизированного процесса более надежным подходом было бы использование rsync.
Я не знаю, возможно ли создать пустую папку с помощью gsutil. Для этого используйте кнопку " Создать папку" на консоли.
Вы не можете создавать папки с gsutils, так как gsutils не поддерживает его (обходной путь см. Ниже).
Тем не менее, это поддерживается через:
- Пользовательский интерфейс в браузере
- написать свой собственный клиент GCS (мы написали наш собственный клиент, который может создавать папки)
Таким образом, даже если у Google есть плоская структура пространства имен, как правильно указывает другой ответ, у него все еще есть возможность создавать отдельные папки как отдельные объекты. К сожалению, gsutils не раскрывает это.
(Ужасно) Обходной путь с помощью gsutils: добавьте фиктивный файл в папку и загрузите этот фиктивный файл - но папка исчезнет, как только вы удалите этот файл, если другие файлы в этой папке отсутствуют.
Скопировано из справки Google Cloud:
Скопируйте объект в папку в корзине. Используйте команду gsutil cp, чтобы создать папку и скопировать в нее изображение:
gsutil cp gs: //my-awesome-bucket/kitten.png gs://my-awesome-bucket/just-a-folder/kitten3.png
Это работает.
Вы не можете создать папку с помощью gsutil на GCS.
Но вы можете скопировать существующую папку с помощью gsutil в GCS.
Чтобы скопировать существующую папку с помощью gsutil в GCS , папка не должна быть пустой, и необходим флаг «-r» , как показано ниже, иначе вы получите сообщение об ошибке, если папка пуста или вы забыли флаг -r :
gsutil cp -r <non-empty-folder> gs://your-bucket
// "-r" is needed for folder
Вы не можете создать пустую папку с мб