Облачная функция для копирования всех файлов из корзины хранилища в папку внутри той же корзины хранилища GCS.

У меня есть файлы внутри корзины Google Cloud Storage, я хочу скопировать все файлы из корзины в том виде, в каком они были получены, и создать копию всех этих файлов внутри папки в той же корзине. (Я нашел решение для копирования в корзину, но как скопировать в ПАПКУ внутри корзины?)

destination = storage_client.bucket('source-bucket-name') # здесь мой исходный и целевой сегменты совпадают

Есть ли способ передать имя папки вместе с именем корзины?


person Rv R    schedule 16.03.2021    source источник


Ответы (1)


На самом деле в Google Cloud Storage нет настоящих папок. В консоли Cloud Storage файлы в вашей корзине представлены в виде иерархического дерева папок (точно так же, как файловая система на вашем локальном жестком диске), но это всего лишь способ представления файлов: подлинных папок / каталогов нет. в ведре. Консоль Cloud Storage просто использует разные части путей к файлам для имитации структуры папок с помощью символа разделителя /.

Этот документ об Cloud Storage и gsutil очень хорошо объясняет и иллюстрирует эту иллюзию. иерархического дерева файлов.

Другими словами, вы должны использовать имя файла (или путь к файлу), состоящее из имени папки / каталога, затем символа разделителя / и, наконец, имени файла. Например: fileName = "summer1970/pic1234.jpg". Как поясняется в комментариях ниже, иллюзия иерархического дерева файлов создается посредством именования файлов, а не именования корзин.

person Renaud Tarnec    schedule 16.03.2021
comment
хорошо, значит ли это, что я могу напрямую передать имя папки с именем сегмента? например: destination = storage_client.bucket ('source-bucket-name / folderName') - @Renaud Tarnec - person Rv R; 16.03.2021
comment
Нет, совсем нет. Существует только один сегмент storage_client.bucket('source-bucket-name'), поскольку вы написали, что мои исходный и целевой сегменты одинаковы. В этом сегменте вы создаете файлы, и когда вы определяете имя файла, вы можете использовать символ / разделитель, чтобы имитировать структуру папок. Таким образом, иллюзия иерархического дерева файлов создается именованием файлов, а не именованием корзин. Если вы поделитесь своим кодом целиком, я могу указать вам, где его адаптировать. - person Renaud Tarnec; 16.03.2021
comment
хорошо, понял. Благодарность! @Renaud Tarnec - person Rv R; 16.03.2021