For AI agents: The documentation index is at https://docs.digitalocean.com/llms.txt. Markdown versions of pages use the same URL with index.html.md in place of the HTML page (for example, append index.html.md to the directory path instead of opening the HTML document).
Backups and snapshots are both disk images of Droplets. We retain weekly backups for four weeks, daily backups for seven days, and usage-based backups for a custom amount of time. We retain snapshots until you choose to delete them.
If you want to keep a backup indefinitely, you can convert it to a snapshot. When you convert a backup to a snapshot, snapshot pricing applies.
Convert to a Snapshot
Using the Control Panel
To convert a backup to a snapshot from the Control Panel, go to the Backups tab of the Backups & Snapshots page, which lists backups by Droplet, including the backups of Droplets you have destroyed. You can also click a Droplet’s name to go to its detail page, then click Backups in the left menu.
Find the backup that you want to convert. Click More to open the drop-down menu, then click Convert to Snapshot. The snapshot appears on the Snapshots tab of the Backups & Snapshots page.
You can create Droplets based on snapshots and copy snapshots to additional datacenter regions.
Using the API
To convert a backup to a snapshot using the API, use the image actions endpoint and set the type field to convert.
How to Add an Image to a Region Using the DigitalOcean CLI
-
Install doctl, the official DigitalOcean CLI.
-
Create a personal access token and save it for use with doctl.
-
Use the token to grant doctl access to your DigitalOcean account.
-
Finally, run doctl compute image-action transfer. Basic usage looks like this, but you can read the usage docs for more details:
doctl compute image-action transfer <image-id> [flags]
The following example transfers an image with the ID 386734086 to the region with the slug nyc3:
doctl compute image-action transfer 386734086 --region nyc3
How to Add an Image to a Region Using the DigitalOcean API
Create a personal access token and save it for use with the API.
cURL
Send a POST request to https://api.digitalocean.com/v2/images/{image_id}/actions.
Using cURL:
# Transfer an Existing Image
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"transfer","region":"nyc2"}' \
"https://api.digitalocean.com/v2/images/7938269/actions"
# Convert an Image into a Snapshot
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $DIGITALOCEAN_TOKEN" \
-d '{"type":"convert"}' \
"https://api.digitalocean.com/v2/images/7938291/actions"
Go
Using Godo, the official DigitalOcean API client for Go:
import (
"context"
"os"
"github.com/digitalocean/godo"
)
func main() {
token := os.Getenv("DIGITALOCEAN_TOKEN")
client := godo.NewFromToken(token)
ctx := context.TODO()
// Transfer an existing image
transferRequest := &godo.ActionRequest{
"type": "transfer",
"region": "nyc2",
}
# Transfer an Image
transfer, _, err := client.ImageActions.Transfer(ctx, 7938269, transferRequest)
# Convert an Image to a Snapshot
# client.image_actions.convert(image_id: 7938269)
}
Ruby
Using DropletKit, the official DigitalOcean API client for Ruby:
require 'droplet_kit'
token = ENV['DIGITALOCEAN_TOKEN']
client = DropletKit::Client.new(access_token: token)
# Transfer an Image
client.image_actions.transfer(image_id: 7938269, region: 'nyc2')
# Convert an Image to a Snapshot
# client.image_actions.convert(image_id: 7938269)
Python
Using PyDo, the official DigitalOcean API client for Python:
import os
from pydo import Client
client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))
req = {
"type": "convert"
}
resp = client.image_actions.post(image_id=342341, body=req)