Gsutil копировать / перемещать файлы в пакетном режиме - PullRequest
0 голосов
/ 31 октября 2019

Есть ли способ скопировать или переместить файлы с помощью команды gsutil в пакетном режиме? Например, если я хочу скопировать 100 файлов из одной папки в другую.

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Попробуйте это:

gsutil ls gs://bucketA | head -n 100 | shuf | gsutil cp -m -I gs://bucketB

Это позволит получить список файлов из bucketA, взять первые 100 элементов, рандомизировать их с shuf и направить их в gsutil скопировать в bucketB. Флаг -I считывает список файлов из stdin.

0 голосов
/ 31 октября 2019

Другой способ сделать это - использовать Клиентские библиотеки . Например, в Python:

from google.cloud import storage

storage_client = storage.Client()

bucket_name = 'my_bucket'
bucket = storage_client.get_bucket(bucket_name)

blobs_to_move = [blob for blob in bucket.list_blobs(prefix="folder1/")]

with storage_client.batch():
    for blob in blobs_to_move[:100]:
        # copy to new destination
        new_blob = bucket.copy_blob(blob, bucket, "folder2/" + blob.name[8:])
        # delete in old destination
        blob.delete()   

Это приведет к перемещению первых 100 файлов из folder1 в корзине GCS my_bucket в folder2.

...