Как перенести содержимое бакета в другой бакет в пределах каталога
Описание задачи
Необходимо перенести содержимое бакета в другой бакет, расположенный в том же самом каталоге.
Решение проблемы
Перенести содержимое бакета напрямую в другой каталог или облако не получится, но можно скопировать его содержимое при помощи утилиты AWS CLI.
В Object Storage поддерживается функциональность Server Side Copy (копирование на стороне сервера). Для переноса воспользуйтесь командой:
aws --endpoint-url=https://storage.yandexcloud.net s3 cp --recursive s3://bucket1/ s3://bucket2/
Перед выполнением команды из вышеуказанного примера выполните следующие замены:
bucket1
- бакет-источник, из которого будет производиться перенос или копирование;bucket2
– бакет-приемник, внутрь которого будет производиться перенос или копирование.
Во время выполнения операции копирования с помощью AWS CLI, все объекты будут перемещаться непосредственно между бакетами. Между хостом, на котором запущена команда aws s3 cp
, и серверами Object Storage будут передаваться только метаданные, то есть ключи передаваемых объектов. Передаваемый и принимаемый в Object Storage трафик при этом не тарифицируется, поскольку является внутренним с точки зрения объектного хранилища.
Примечание
Аналогичным способом можно скопировать содержимое бакета не только в другой каталог в рамках того же облака, но и в каталог в другом облаке. При этом необходимо, чтобы у используемой учетной записи IAM присутствовал доступ на запись в оба бакета.