Список всех снимков
Получите список всех снимков состояния на ваших серверах.
Параметры запроса
Параметр
Тип
Необходимый
Описание
server_id
integer
Нет
Фильтрация снимков по идентификатору сервера
Пример запроса
curl -X GET "https://admin.vps.org/api/v1/snapshots/?server_id=12345" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"
Копировать
import requests
url = "https://admin.vps.org/api/v1/snapshots/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
params = {"server_id": 12345}
response = requests.get(url, headers=headers, params=params)
print(response.json())
Копировать
const response = await fetch('https://admin.vps.org/api/v1/snapshots/?server_id=12345', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
}
});
const snapshots = await response.json();
console.log(snapshots);
Копировать
Пример ответа
{
"count": 2,
"results": [
{
"id": 801,
"server": {
"id": 12345,
"name": "web-server-01"
},
"name": "pre-migration-snapshot",
"status": "completed",
"size_mb": 5120,
"created_at": "2025-01-15T18:30:00Z",
"description": "Before major migration"
},
{
"id": 798,
"server": {
"id": 12345,
"name": "web-server-01"
},
"name": "weekly-snapshot-2025-01-08",
"status": "completed",
"size_mb": 4856,
"created_at": "2025-01-08T12:00:00Z",
"description": "Weekly snapshot"
}
]
}
Коды состояния ответа
200
Список снимков успешно получен.
401
Несанкционированный доступ — недействительный или отсутствующий токен аутентификации.
Создать снимок
Создайте снимок текущего состояния сервера. Снимки - это точечные копии всего сервера.
Параметры тела запроса
Параметр
Тип
Необходимый
Описание
server_id
integer
Да
Идентификатор сервера для создания снимка.
name
string
Да
Название для снимка (буквенно-цифровое, дефисы, подчеркивания)
description
string
Нет
Дополнительное описание для снимка.
Пример запроса
curl -X POST "https://admin.vps.org/api/v1/snapshots/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"server_id": 12345,
"name": "before-update-snapshot",
"description": "Snapshot before system update"
}'
Копировать
import requests
url = "https://admin.vps.org/api/v1/snapshots/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
data = {
"server_id": 12345,
"name": "before-update-snapshot",
"description": "Snapshot before system update"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
Копировать
const response = await fetch('https://admin.vps.org/api/v1/snapshots/', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
server_id: 12345,
name: 'before-update-snapshot',
description: 'Snapshot before system update'
})
});
const snapshot = await response.json();
console.log(snapshot);
Копировать
Пример ответа
{
"id": 802,
"server": {
"id": 12345,
"name": "web-server-01"
},
"name": "before-update-snapshot",
"status": "in_progress",
"size_mb": null,
"created_at": "2025-01-16T16:15:00Z",
"description": "Snapshot before system update",
"message": "Snapshot is being created. This may take 3-10 minutes depending on server size."
}
Коды состояния ответа
201
Создание снимка успешно завершено.
400
Bad Request - Invalid parameters or snapshot limit reached
401
Несанкционированный доступ — недействительный или отсутствующий токен аутентификации.
404
Not Found - Server does not exist
Замечание: You can have a maximum of 5 snapshots per server. Creating a snapshot while the server is running may result in filesystem inconsistencies. For best results, stop the server before creating a snapshot.
Восстановление из моментального снимка
Верните сервер государству, запечатанный в снимке. Это перезапишет все текущие данные на сервере.
Параметры пути
Параметр
Тип
Необходимый
Описание
snapshot_id
integer
Да
Уникальный идентификатор снимка
Пример запроса
curl -X POST "https://admin.vps.org/api/v1/snapshots/801/restore/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"
Копировать
import requests
snapshot_id = 801
url = f"https://admin.vps.org/api/v1/snapshots/{snapshot_id}/restore/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
response = requests.post(url, headers=headers)
print(response.json())
Копировать
const snapshotId = 801;
const response = await fetch(`https://admin.vps.org/api/v1/snapshots/${snapshotId}/restore/`, {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
}
});
const result = await response.json();
console.log(result);
Копировать
Пример ответа
{
"status": "success",
"message": "Server is being restored from snapshot. This may take 5-15 minutes.",
"snapshot": {
"id": 801,
"name": "pre-migration-snapshot",
"created_at": "2025-01-15T18:30:00Z"
},
"server": {
"id": 12345,
"name": "web-server-01",
"status": "restoring"
}
}
Коды состояния ответа
200
Восстановление успешно завершено.
400
Bad Request - Server is not in a valid state for restoration
401
Несанкционированный доступ — недействительный или отсутствующий токен аутентификации.
404
Снимок не найден — он не существует.
Предупреждение: Restoring from a snapshot will overwrite all current data on the server. This action cannot be undone. The server will be automatically stopped before restoration begins.
Удалить снимок
Безвозвратно удалить снимок. Это действие необратимо.
Параметры пути
Параметр
Тип
Необходимый
Описание
snapshot_id
integer
Да
Уникальный идентификатор снимка
Пример запроса
curl -X DELETE "https://admin.vps.org/api/v1/snapshots/801/" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json"
Копировать
import requests
snapshot_id = 801
url = f"https://admin.vps.org/api/v1/snapshots/{snapshot_id}/"
headers = {
"Authorization": "Bearer YOUR_API_TOKEN",
"Content-Type": "application/json"
}
response = requests.delete(url, headers=headers)
print(response.status_code)
Копировать
Коды состояния ответа
204
Снимок успешно удален.
401
Несанкционированный доступ — недействительный или отсутствующий токен аутентификации.
404
Снимок не найден — он не существует.
Snapshots vs Backups
Понимание того, когда использовать снимки против резервного копирования:
API снимков
Цель: Quick point-in-time recovery
Скорость: Faster to create and restore (3-15 min)
Пример использования: Before risky operations (updates, config changes)
Хранилище: Stored on same infrastructure
Предел: 5 snapshots per server
Лучше всего подходит для: Short-term rollback capability
API резервного копирования
Цель: Long-term data protection
Скорость: Slower to create and restore (varies)
Пример использования: Regular automated data protection
Хранилище: Separate backup storage
Предел: 10 manual + automatic backups
Лучше всего подходит для: Disaster recovery and compliance
Передовая практика
Перед обновлением: Создать снимок перед основными обновлениями системы
Испытание: Использовать снимки при изменении конфигурации
Совместная стратегия: Использовать как снимки (краткосрочные), так и резервные (долгосрочные)
Уборка: Удалить старые снимки после успешного обновления
Состояние сервера: Подумайте о том, чтобы остановить сервер, прежде чем создавать критические снимки