Как переместить объект из одного ведра в другое?
У меня в Minio хранится большое количество объектов. Мне нужно переместить их из одного ведра в другое. Из-за большого количества объектов (и размера самих объектов) я не хочу загружать их в память.
Единственный способ, который я нашел, - это скопировать объекты в целевую корзину и удалить их из исходной корзины.
Есть ли способ переместить их с помощью одной команды (например, mv
)?
3 ответа
@yaskovdev S3 API не позволяет mv
нравится функциональность. Итак, шаги, которые вы описали, являются единственным способом сделать это.
С апреля 2020 года клиентская утилита minio поддерживает функцию перемещения:
$ mc mv -h
NAME:
mc mv - move objects
USAGE:
mc mv [FLAGS] SOURCE [SOURCE...] TARGET
FLAGS:
--recursive, -r move recursively
--older-than value move objects older than L days, M hours and N minutes
--newer-than value move objects newer than L days, M hours and N minutes
--storage-class value, --sc value set storage class for new object(s) on target
--encrypt value encrypt/decrypt objects (using server-side encryption with server managed keys)
--attr value add custom metadata for the object
--continue, -c create or resume move session
--preserve, -a preserve filesystem attributes (mode, ownership, timestamps)
--disable-multipart disable multipart upload feature
--encrypt-key value encrypt/decrypt objects (using server-side encryption with customer provided keys)
--config-dir value, -C value path to configuration folder (default: "/Users/prerok/.mc")
--quiet, -q disable progress bar display
--no-color disable color theme
--json enable JSON formatted output
--debug enable debug output
--insecure disable SSL certificate verification
--help, -h show help
API S3 не поддерживает функцию перемещения, поэтому утилита mc фактически сначала выполняет копирование, а затем удаление объекта. Источник: https://github.com/minio/mc/blob/133dd1f7da237a91dc291cbf8f3a5ad66fffc425/cmd/mv-main.go
пример :
// Create object "my-objectname" in bucket "my-bucketname" by copying from object
// "my-objectname" in bucket "my-source-bucketname".
minioClient.copyObject(
CopyObjectArgs.builder()
.bucket("my-bucketname")
.object("my-objectname")
.source(
CopySource.builder()
.bucket("my-source-bucketname")
.object("my-objectname")
.build())
.build());
больше информации здесь -> документы minio