]>
Commit | Line | Data |
---|---|---|
177db84b DM |
1 | Backup Protocol |
2 | =============== | |
3 | ||
7eb9f484 DM |
4 | Proxmox Backup Server uses a REST based API. While the management |
5 | interface use normal HTTP, the actual backup and restore interface use | |
6 | HTTP/2 for improved performance. Both HTTP and HTTP/2 are well known | |
7 | standards, so the following section assumes that you are familiar on | |
8 | how to use them. | |
45cc157f | 9 | |
7eb9f484 DM |
10 | |
11 | Backup Protocol API | |
12 | ------------------- | |
13 | ||
14 | To start a new backup, the API call ``GET /api2/json/backup`` needs to | |
15 | be upgraded to a HTTP/2 connection using | |
16 | ``proxmox-backup-protocol-v1`` as protocol name:: | |
17 | ||
18 | GET /api2/json/backup HTTP/1.1 | |
19 | UPGRADE: proxmox-backup-protocol-v1 | |
20 | ||
21 | The server replies with HTTP 101 Switching Protocol status code, | |
50066325 | 22 | and you can then issue REST commands on that updated HTTP/2 connection. |
7eb9f484 | 23 | |
50066325 DM |
24 | The backup protocol allows you to upload three different kind of files: |
25 | ||
26 | - Chunks and blobs (binary data) | |
27 | ||
28 | - Fixed Indexes (List of chunks with fixed size) | |
29 | ||
30 | - Dynamic Indexes (List of chunk with variable size) | |
31 | ||
32 | The following section gives a short introduction how to upload such | |
33 | files. Please use the `API Viewer <api-viewer/index.html>`_ for | |
34 | details about available REST commands. | |
35 | ||
36 | ||
37 | Upload Blobs | |
38 | ~~~~~~~~~~~~ | |
39 | ||
40 | Uploading blobs is done using ``POST /blob``. The HTTP body contains the | |
ec07a280 | 41 | data encoded as :ref:`Data Blob <data-blob-format>`). |
50066325 DM |
42 | |
43 | The file name needs to end with ``.blob``, and is automatically added | |
44 | to the backup manifest. | |
45 | ||
46 | ||
47 | Upload Chunks | |
48 | ~~~~~~~~~~~~~ | |
49 | ||
50 | Chunks belong to an index, so you first need to open an index (see | |
51 | below). After that, you can upload chunks using ``POST /fixed_chunk`` | |
52 | and ``POST /dynamic_chunk``. The HTTP body contains the chunk data | |
ec07a280 | 53 | encoded as :ref:`Data Blob <data-blob-format>`). |
50066325 DM |
54 | |
55 | ||
56 | Upload Fixed Indexes | |
57 | ~~~~~~~~~~~~~~~~~~~~ | |
58 | ||
59 | Fixed indexes are use to store VM image data. The VM image is split | |
60 | into equally sized chunks, which are uploaded individually. The index | |
61 | file simply contains a list to chunk digests. | |
62 | ||
63 | You create a fixed index with ``POST /fixed_index``. Then upload | |
64 | chunks with ``POST /fixed_chunk``, and append them to the index with | |
65 | ``PUT /fixed_index``. When finished, you need to close the index using | |
66 | ``POST /fixed_close``. | |
67 | ||
68 | The file name needs to end with ``.fidx``, and is automatically added | |
69 | to the backup manifest. | |
70 | ||
71 | ||
72 | Upload Dynamic Indexes | |
73 | ~~~~~~~~~~~~~~~~~~~~~~ | |
74 | ||
75 | Dynamic indexes are use to store file archive data. The archive data | |
76 | is split into dynamically sized chunks, which are uploaded | |
77 | individually. The index file simply contains a list to chunk digests | |
78 | and offsets. | |
79 | ||
80 | You create a dynamic sized index with ``POST /dynamic_index``. Then | |
81 | upload chunks with ``POST /dynamic_chunk``, and append them to the index with | |
82 | ``PUT /dynamic_index``. When finished, you need to close the index using | |
83 | ``POST /dynamic_close``. | |
84 | ||
85 | The file name needs to end with ``.didx``, and is automatically added | |
86 | to the backup manifest. | |
87 | ||
88 | Finish Backup | |
89 | ~~~~~~~~~~~~~ | |
90 | ||
91 | Once you have uploaded all data, you need to call ``POST | |
92 | /finish``. This commits all data and ends the backup protocol. | |
7eb9f484 DM |
93 | |
94 | ||
95 | Restore/Reader Protocol API | |
96 | --------------------------- | |
97 | ||
98 | To start a new reader, the API call ``GET /api2/json/reader`` needs to | |
99 | be upgraded to a HTTP/2 connection using | |
100 | ``proxmox-backup-reader-protocol-v1`` as protocol name:: | |
101 | ||
102 | GET /api2/json/reader HTTP/1.1 | |
103 | UPGRADE: proxmox-backup-reader-protocol-v1 | |
104 | ||
105 | The server replies with HTTP 101 Switching Protocol status code, | |
50066325 DM |
106 | and you can then issue REST commands on that updated HTTP/2 connection. |
107 | ||
108 | The reader protocol allows you to download three different kind of files: | |
109 | ||
110 | - Chunks and blobs (binary data) | |
111 | ||
112 | - Fixed Indexes (List of chunks with fixed size) | |
113 | ||
114 | - Dynamic Indexes (List of chunk with variable size) | |
7eb9f484 | 115 | |
50066325 DM |
116 | The following section gives a short introduction how to download such |
117 | files. Please use the `API Viewer <api-viewer/index.html>`_ for details about | |
7eb9f484 | 118 | available REST commands. |
50066325 DM |
119 | |
120 | ||
121 | Download Blobs | |
122 | ~~~~~~~~~~~~~~ | |
123 | ||
124 | Downloading blobs is done using ``GET /download``. The HTTP body contains the | |
ec07a280 | 125 | data encoded as :ref:`Data Blob <data-blob-format>`. |
50066325 DM |
126 | |
127 | ||
128 | Download Chunks | |
129 | ~~~~~~~~~~~~~~~ | |
130 | ||
131 | Downloading chunks is done using ``GET /chunk``. The HTTP body contains the | |
ec07a280 | 132 | data encoded as :ref:`Data Blob <data-blob-format>`). |
50066325 DM |
133 | |
134 | ||
135 | Download Index Files | |
136 | ~~~~~~~~~~~~~~~~~~~~ | |
137 | ||
138 | Downloading index files is done using ``GET /download``. The HTTP body | |
b488f850 DM |
139 | contains the data encoded as :ref:`Fixed Index <fixed-index-format>` |
140 | or :ref:`Dynamic Index <dynamic-index-format>`. |