---
title: "Transfer (copy) an image and configure image sharing"
sidebar_label: "Transfer and share an image"
sidebar_position: 3
description: "How to copy an image to another pool segment, project, or account and configure image sharing between projects"
---

import Tabs from '@theme/Tabs'
import TabItem from '@theme/TabItem'
import {TabItemLabel} from '@selectel/docux/components'
import MoreVerticalIcon from '@selectel/docux/icons/more-vertical'
import CopyIcon from '@selectel/docux/icons/copy'
import CheckIcon from '@selectel/docux/icons/check'
import ArrowLinesRightIcon from '@selectel/docux/icons/arrow-lines-right'
import Formbricks from '@theme/MDXComponents/Formbricks'

# Transfer (copy) an image and configure image sharing

A created or uploaded image can be:

* [transfer (copy) to another pool segment, project, or account](#copy-image) — a new image will be created, which can be managed in both the source and target projects. Storage of all image copies is billed;
* or [configure image sharing between projects](#configure-access-to-image) within the same pool — you will only be able to manage the image in the source project. Storage of the image is only billed in the source project.

In both cases, you will be able to create cloud servers and volumes from the images.

## Transfer (copy) an image to another pool segment, project, or account \{#copy-image}

To copy an image, you must obtain its URL and create a new image from it. You cannot transfer an image directly.

You can copy an image to another [pool segment](/infrastructure/locations.mdx#pool) (including to another availability zone or region), [project](/access-control/projects/about-projects.mdx), or account. When copying an image to another project or account, you can also change the pool segment. If you need to copy an image within the same pool segment, [configure cross-project image access](#configure-access-to-image) — storage of the image will be charged only in the source project.

Storage of all image copies is charged according to the [Cloud Platform payment model](/cloud-servers/about/payment.mdx#payment-model). You can manage the image and create cloud servers and disks from it both in the source project and in the target project.

After copying, you can [delete the source image from the image storage](/cloud-servers/images/delete-image.mdx#delete-image-from-storage).

<Tabs queryString="copy-image">
  <TabItem value="panel" default>
    <TabItemLabel>
      Control panel
    </TabItemLabel>

    1. In the [Control panel](https://my.selectel.ru/vpc/default/images/), on the top menu, click **Products** and select **Cloud Servers**.

    2. Go to the **Images** section.

    3. In the <MoreVerticalIcon /> image menu, select **Copy image URL**.

    4. Open the project menu and select the target project to which you want to copy the image.

    5. Click **Create image**.

    6. Enter the image name.

    7. Select a [location](/infrastructure/locations.mdx) to which the image will be uploaded.

       Images smaller than 16 GB are automatically replicated to adjacent pool segments of the location.

    8. Select the operating system.

    9. Select URL as the image source.

    10. Enter the link you copied in step 3.

    11. Select an image format or a container format. Learn more about formats in the [Own Images](/cloud-servers/images/about-images.mdx#own-images) subsection.

        If you are not sure which formats to specify, set the image format to `raw` and the container format to `bare`.

    12. Optional: check the **Specify minimum disk size and memory** box and specify the RAM size in MB and disk size in GB. This is the minimum disk and RAM size required to create a server from this image. For images in the `.iso` format, you cannot specify minimum values.

        After the image is created, you cannot change the minimum disk size and memory in the Control panel. To change the minimum values, you will need to recreate the image or use [OpenStack CLI](/cloud-servers/tools/openstack-cli/).

    13. Click **Create**.

    14. Optional: [delete the original image from the image storage](/cloud-servers/images/delete-image.mdx#delete-image-from-storage).
  </TabItem>

  <TabItem value="openstack">
    <TabItemLabel>
      OpenStack CLI
    </TabItemLabel>

    1. In the [Control panel](https://my.selectel.ru/vpc/default/images/), on the top menu, click **Products** and select **Cloud Servers**.

    2. Go to the **Images** section.

    3. In the <MoreVerticalIcon /> image menu, select **Copy image URL**.

    4. [Open the OpenStack CLI](/cloud-servers/tools/openstack-cli/).

    5. Create an empty image:

       ```bash
       openstack image create <image_name>
       ```

       Specify `<image_name>` — the name of the image.

    6. Import a file into the image:

       ```bash
       openstack image import \
         --method web-download \
         --uri <image_url> \
         <image>
       ```

       Specify:

       * `<image_url>` — the link to the image file in the format `https://example.com/file.raw`;
       * `<image>` — the ID or name of the image you created in step 4.

    7. If the image is Linux-based, additionally add the properties:

       ```bash
       --property hw_disk_bus=scsi \
       --property hw_qemu_guest_agent=yes \
       --property hw_scsi_model=virtio-scsi \
       --property os_distro=ubuntu \
       --property os_type=linux \
       --property x_sel_image_agent_type=cloud-init \
       --property x_sel_image_os_arch=amd64 \
       --property x_sel_image_os_dist=ubuntu \
       --property x_sel_image_os_type=linux \
       --property x_sel_image_type=master \
       ```

    8. Optional: [delete the original image from the image storage](/cloud-servers/images/delete-image.mdx#delete-image-from-storage).
  </TabItem>
</Tabs>

## Configure image sharing between projects \{#configure-access-to-image}

You can configure shared access to an image between [projects](/access-control/projects/about-projects.mdx) in the same or different accounts. In the target project, you will be able to create cloud servers and disks from the image, while you will only be able to manage the image in the source project: rename, change the operating system, or delete the image. Storage of the image is charged only in the source project — according to the [Cloud Platform payment model](/cloud-servers/about/payment.mdx#payment-model).

You can configure image access only within a [pool](/infrastructure/locations.mdx#pool).

In the target project, you can [disable access to the image](/cloud-servers/images/delete-image.mdx#disable-access-to-image).

### Configure image access for a project within a single account \{#configure-access-to-image-in-one-account}

<Tabs>
  <TabItem value="panel" default>
    <TabItemLabel>
      Control panel
    </TabItemLabel>

    1. In the [Control panel](https://my.selectel.ru/vpc/default/images/), on the top menu, click **Products** and select **Cloud Servers**.

    2. Copy the ID of the target project to which you want to copy the image. To do this, open the project menu and click <CopyIcon /> in the row of the required project.

    3. Switch to the project where the image is located. To do this, open the project menu and select the source project.

    4. On the top menu, click **Products** and select **Cloud Servers**.

    5. Go to the **Images** section.

    6. In the image card, open the **Projects** block.

    7. Click **Add project**.

    8. Paste the ID of the target project you copied in step 2.

    9. Click <CheckIcon />.

    10. Copy the image UUID.

    11. Open the project menu and select the target project.

    12. On the top menu, click **Products** and select **Cloud Servers**.

    13. Go to the **Images** section.

    14. Ensure you have selected the pool to which you want to transfer the image.

    15. On the section page, click <ArrowLinesRightIcon />.

    16. Paste the image UUID you copied in step 10.

    17. Click **Accept image**.
  </TabItem>

  <TabItem value="openstack" default>
    <TabItemLabel>
      OpenStack CLI
    </TabItemLabel>

    1. [Open the OpenStack CLI](/cloud-servers/tools/openstack-cli/).

    2. Make the image available for transfer:

       ```bash
       openstack image set --shared <image_id>
       ```

       Specify `<image_id>` — the ID of the image for which you want to configure access.

    3. Add the image to the target project:

       ```bash
       openstack image add project <image_id> \
           <project_id>
       ```

       Specify:

       * `<image_id>` — the ID of the image for which you want to configure access;
       * `<project_id>` — the ID of the project in which the image will be available.

    4. If you, as a service user, have access to the target project, [change your authorization data](/cloud-servers/tools/openstack-cli/change-authorization-data.mdx). If you do not have access, the image must be accepted by a service user with the [`member`](/access-control/role-reference.mdx#member) role in the **Project** access scope.

    5. If you changed authorization data in step 4, accept the image in the target project:

       ```bash
       openstack image set --accept <image_id>
       ```

       Specify `<image_id>` — the image ID.
  </TabItem>
</Tabs>

### Configure image access for a project from another account \{#configure-access-to-image-in-different-account}

<Tabs>
  <TabItem value="panel" default>
    <TabItemLabel>
      Control panel
    </TabItemLabel>

    1. [Log in to two accounts](/account/manage-multiple-accounts.mdx).

    2. Open the account with the target project.

    3. In the [Control panel](https://my.selectel.ru/vpc/default/images/), on the top menu, click **Products** and select **Cloud Servers**.

    4. Copy the ID of the target project to which you want to copy the image. To do this, open the project menu and click <CopyIcon /> in the row of the required project.

    5. In the top right corner, open the menu (account number) and select the account with the project where the image is located.

    6. Switch to the project where the image is located. To do this, open the project menu and select the source project.

    7. On the top menu, click **Products** and select **Cloud Servers**.

    8. Go to the **Images** section.

    9. In the image card, open the **Projects** block.

    10. Click **Add project**.

    11. Paste the ID of the target project you copied in step 4.

    12. Click <CheckIcon />.

    13. Copy the image UUID.

    14. In the top right corner, open the menu (account number) and select the account with the target project.

    15. Switch to the target project. To do this, open the project menu and select the target project.

    16. On the top menu, click **Products** and select **Cloud Servers**.

    17. Go to the **Images** section.

    18. Ensure you have selected the pool to which you want to transfer the image.

    19. On the section page, click <ArrowLinesRightIcon />.

    20. Paste the image UUID you copied in step 13.

    21. Click **Accept image**.
  </TabItem>

  <TabItem value="openstack" default>
    <TabItemLabel>
      OpenStack CLI
    </TabItemLabel>

    1. [Open the OpenStack CLI](/cloud-servers/tools/openstack-cli/).

    2. Make the image available for transfer:

       ```bash
       openstack image set --shared <image_id>
       ```

       Specify `<image_id>` — the ID of the image for which you want to configure access.

    3. Add the image to the target project:

       ```bash
       openstack image add project <image_id> \
           <project_id>
       ```

       Specify:

       * `<image_id>` — the ID of the image for which you want to configure access;
       * `<project_id>` — the ID of the project in which the image will be available.

    4. If you, as a service user, have access to the target project, [change your authorization data](/cloud-servers/tools/openstack-cli/change-authorization-data.mdx). If you do not have access, the image must be accepted by a service user with the [`member`](/access-control/role-reference.mdx#member) role in the **Project** access scope.

    5. If you changed authorization data in step 4, accept the image in the target project of another account:

       ```bash
       openstack image set --accept <image_id>
       ```

       Specify `<image_id>` — the image ID.
  </TabItem>
</Tabs>

<Formbricks />
