[Документация Yandex Cloud](../../../index.md) > [Yandex Object Storage](../../index.md) > [Пошаговые инструкции](../index.md) > Объекты > Переименование и перемещение объекта

# Переименование и перемещение объекта


Чтобы работать с объектами в [зашифрованном](../../concepts/encryption.md) бакете, у пользователя или [сервисного аккаунта](../../../iam/concepts/users/service-accounts.md) вместе с [ролью](../../security/index.md#storage-configurer) `storage.configurer` должны быть следующие [роли на ключ шифрования](../../../kms/operations/key-access.md):

* `kms.keys.encrypter` — для чтения ключа, [шифрования](../../../kms/security/index.md#kms-keys-encrypter) и загрузки объектов;
* `kms.keys.decrypter` — для чтения ключа, [расшифровки](../../../kms/security/index.md#kms-keys-decrypter) и скачивания объектов;
* `kms.keys.encrypterDecrypter` — включает [разрешения](../../../kms/security/index.md#kms-keys-encrypterDecrypter), предоставляемые ролями `kms.keys.encrypter` и `kms.keys.decrypter`.

Подробнее смотрите [Сервисные роли Key Management Service](../../../kms/security/index.md#service-roles).


Помимо Yandex Cloud CLI и AWS CLI для переименования и перемещения объектов вы можете воспользоваться [поддерживаемыми инструментами](../../tools/index.md), например файловым браузером.

## Переименование {#rename}

{% note info %}

Можно переименовать [объекты](../../concepts/object.md) в [бакете](../../concepts/bucket.md). Переименовать сам бакет нельзя. Но вы можете [создать](../buckets/create.md) новый бакет и [скопировать](copy.md#copy-from-bucket-to-bucket) в него все объекты из исходного.

{% endnote %}

{% list tabs group=instructions %}

- Yandex Cloud CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  1. Посмотрите описание команды CLI для переименования объекта в бакете:

      ```bash
      yc storage s3 mv --help
      ```

  1. Получите список бакетов в каталоге по умолчанию:
     
     ```bash
     yc storage bucket list
     ```
     
     Результат:
     
     ```text
     +------------------+----------------------+-------------+-----------------------+---------------------+
     |       NAME       |      FOLDER ID       |  MAX SIZE   | DEFAULT STORAGE CLASS |     CREATED AT      |
     +------------------+----------------------+-------------+-----------------------+---------------------+
     | first-bucket     | b1gmit33ngp6******** | 53687091200 | STANDARD              | 2022-12-16 13:58:18 |
     +------------------+----------------------+-------------+-----------------------+---------------------+
     ```
  1. Выполните команду:

      ```bash
      yc storage s3 mv \
        s3://<имя_бакета>/<ключ_объекта> \
        s3://<имя_бакета>/<новый_ключ_объекта>
      ```

      Результат:

      ```text
      move: s3://my-bucket/object.txt to s3://my-bucket/renamed-object.txt
      ```

  Подробнее о команде `yc storage s3 mv` в [документации](../../cli-ref/s3/mv.md).

- AWS CLI {#aws-cli}

  1. Если у вас еще нет AWS CLI, [установите и сконфигурируйте его](../../tools/aws-cli.md).
  1. Чтобы переименовать объект, выполните команду:

      ```bash
      aws --endpoint-url=https://storage.yandexcloud.kz/ \
        s3 mv s3://<имя_бакета>/<ключ_объекта> s3://<имя_бакета>/<новый_ключ_объекта>
      ```

      Где: 

      * `--endpoint-url` — эндпоинт Object Storage.
      * `s3 mv` — команда для переименования или перемещения объекта. Чтобы переименовать объект, в первой части команды укажите имя бакета и актуальный [ключ](../../concepts/object.md#key) объекта, который нужно переименовать, а во второй — имя бакета и новый ключ объекта.

      Результат:

      ```text
      move: s3://<имя_бакета>/<ключ_объекта> to s3://<имя_бакета>/<новый_ключ_объекта>
      ```

  Подробнее о команде `aws s3 mv` читайте в документации [AWS CLI Command Reference](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/mv.html).

{% endlist %}

### Изменение префикса для группы объектов {#rename-prefix} 

{% list tabs group=instructions %}

- Yandex Cloud CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  Чтобы изменить [префикс](../../concepts/object.md#key) для группы объектов, выполните команду:

  ```bash
  yc storage s3 mv --recursive \
    s3://<имя_бакета>/<префикс>/ \
    s3://<имя_бакета>/<новый_префикс>/
  ```

  Результат:

  ```text
  move: s3://my-bucket/my-prefix/ to s3://my-bucket/renamed-prefix/
  ```

  Подробнее о команде `yc storage s3 mv` в [документации](../../cli-ref/s3/mv.md).

- AWS CLI {#aws-cli}

  1. Если у вас еще нет AWS CLI, [установите и сконфигурируйте его](../../tools/aws-cli.md).
  1. Выполните команду:

      ```bash
      aws --endpoint-url=https://storage.yandexcloud.kz/ \
        s3 mv --recursive s3://<имя_бакета>/<префикс>/ s3://<имя_бакета>/<новый_префикс>/
      ```

      Где: 

      * `--endpoint-url` — эндпоинт Object Storage.
      * `s3 mv` — команда для переименования или перемещения объекта. Чтобы переименовать объект, в первой части команды укажите имя бакета и актуальный [префикс](../../concepts/object.md#key) группы объектов, которую нужно переименовать, а во второй — имя бакета и новый префикс группы объектов.
      * `--recursive` — параметр для изменения префикса группы объектов.

      Результат:

      ```text
      move: s3://<имя_бакета>/<префикс>/ to s3://<имя_бакета>/<новый_префикс>/
      ```  

  Подробнее о команде `aws s3 mv` читайте в документации [AWS CLI Command Reference](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/mv.html).

{% endlist %}

## Перемещение {#move}

{% list tabs group=instructions %}

- Yandex Cloud CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.

  1. Посмотрите описание команды CLI для перемещения объекта:

      ```bash
      yc storage s3 mv --help
      ```

  1. Получите список бакетов в каталоге по умолчанию:
     
     ```bash
     yc storage bucket list
     ```
     
     Результат:
     
     ```text
     +------------------+----------------------+-------------+-----------------------+---------------------+
     |       NAME       |      FOLDER ID       |  MAX SIZE   | DEFAULT STORAGE CLASS |     CREATED AT      |
     +------------------+----------------------+-------------+-----------------------+---------------------+
     | first-bucket     | b1gmit33ngp6******** | 53687091200 | STANDARD              | 2022-12-16 13:58:18 |
     +------------------+----------------------+-------------+-----------------------+---------------------+
     ```
  1. Выполните команду:

      ```bash
      yc storage s3 mv \
        s3://<имя_бакета-источника>/<ключ_объекта> \
        s3://<имя_целевого_бакета>/<ключ_объекта>
      ```

      Результат:

      ```text
      move: s3://my-bucket/object.txt to s3://new-bucket/object.txt
      ```

- AWS CLI {#aws-cli}

  1. Если у вас еще нет AWS CLI, [установите и сконфигурируйте его](../../tools/aws-cli.md).
  1. Чтобы переместить объект, например, из одного бакета в другой, выполните команду:

      ```bash
      aws --endpoint-url=https://storage.yandexcloud.kz/ \
        s3 mv s3://<имя_бакета-источника>/<ключ_объекта> s3://<имя_целевого_бакета>/<ключ_объекта>
      ```

      Где:

      * `--endpoint-url` — эндпоинт Object Storage.
      * `s3 mv` — команда для переименования или перемещения объекта. Чтобы переместить объект, в первой части команды укажите имя бакета-источника и [ключ](../../concepts/object.md#key) объекта, который нужно переместить, а во второй — имя целевого бакета и ключ объекта.

      Результат:

      ```text
      move: s3://<имя_бакета-источника>/<ключ_объекта> to s3://<имя_целевого_бакета>/<ключ_объекта>
      ```

  Подробнее о команде `aws s3 mv` читайте в документации [AWS CLI Command Reference](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/mv.html).

{% endlist %}

### Перемещение объекта из одной папки в другую {#move-object-folder}

В Object Storage [папки](../../concepts/object.md#folder) имитируются с помощью префиксов ключей. Чтобы переместить объект из одной папки в другую, [переименуйте](#rename) префикс его ключа, например:

{% list tabs group=instructions %}

- Yandex Cloud CLI {#cli}

  ```bash
  yc storage s3 mv \
    s3://<имя_бакета>/<префикс>/<имя_объекта> \
    s3://<имя_бакета>/<новый_префикс>/<имя_объекта>
  ```

  Результат:

  ```text
  move: s3://my-bucket/my-prefix/object.txt to s3://my-bucket/renamed-prefix/object.txt
  ```

- AWS CLI {#aws-cli}

  ```bash
  aws --endpoint-url=https://storage.yandexcloud.kz/ \
    s3 mv s3://<имя_бакета>/<префикс>/<имя_объекта> s3://<имя_бакета>/<новый_префикс>/<имя_объекта>
  ```

  Результат:

  ```text
  move: s3://my-bucket/my-prefix/object.txt to s3://my-bucket/renamed-prefix/object.txt
  ```  

{% endlist %}

### Перемещение папки с объектами {#move-folder}

В Object Storage [папки](../../concepts/object.md#folder) имитируются с помощью префиксов ключей. Чтобы переместить папку с объектами, [измените](#rename-prefix) префикс для группы объектов. 

### Перемещение всех объектов из одного бакета в другой {#move-all}

{% list tabs group=instructions %}

- Yandex Cloud CLI {#cli}

  Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), [установите и инициализируйте его](../../../cli/quickstart.md#install).

  По умолчанию используется каталог, указанный при [создании](../../../cli/operations/profile/profile-create.md) профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду `yc config set folder-id <идентификатор_каталога>`. Также для любой команды вы можете указать другой каталог с помощью параметров `--folder-name` или `--folder-id`. Если вы обращаетесь к ресурсу по имени, поиск будет выполнен в каталоге по умолчанию. Если вы обращаетесь к ресурсу по идентификатору, поиск будет выполнен глобально — во всех каталогах с учетом прав доступа.
  
  Выполните команду:

  ```bash
  yc storage s3 mv --recursive \
    s3://<имя_бакета-источника>/ \
    s3://<имя_целевого_бакета>/
  ```

  Результат:

  ```text
  move: s3://my-bucket/object1.txt to s3://new-bucket/object1.txt
  move: s3://my-bucket/object2.txt to s3://new-bucket/object2.txt
  ```

- AWS CLI {#aws-cli}

  1. Если у вас еще нет AWS CLI, [установите и сконфигурируйте его](../../tools/aws-cli.md).
  1. Выполните команду:

      ```bash
      aws --endpoint-url=https://storage.yandexcloud.kz/ \
        s3 mv --recursive s3://<имя_бакета-источника> s3://<имя_целевого_бакета>
      ```

      Где:
      * `--endpoint-url` — эндпоинт Object Storage.
      * `s3 mv` — команда для переименования или перемещения объекта. Чтобы переместить все объекты, в первой части команды укажите имя бакета-источника, а во второй — имя целевого бакета.
      * `--recursive` — параметр для перемещения всех объектов из одного бакета в другой.

      Результат:

      ```text
      move: s3://<имя_бакета-источника>/<ключ_объекта_1> to s3://<имя_целевого_бакета>/<ключ_объекта_1>
      move: s3://<имя_бакета-источника>/<ключ_объекта_2> to s3://<имя_целевого_бакета>/<ключ_объекта_2>
      ```

  Подробнее о команде `aws s3 mv` читайте в документации [AWS CLI Command Reference](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/s3/mv.html).

{% endlist %}