Using Commvault REST APIs, you can restore file system data obtained through a backup. This scenario covers in-place and out-of-place restore operations.
Prerequisites
-
Review the POST Retrieve to Client (Restore) API.
-
Use the POST Login API to request an authentication token and to retrieve the userGUID parameter.
-
Complete the steps in the Browse Using a Session ID scenario. You need values from the following APIs:
-
POST Client List API <subClient> element:
clientId
clientName
applicationId
instanceId
backupsetId
subclientId
-
POST Browse API:
path attribute in the <dataResultSet> element
backupTime attribute in the <advancedData> element (this is needed if you restore a specific version of a file)
-
In-Place Restore
Use this request to restore folders and files to their original path locations.
Send a POST retrieveToClient request with the restore information in the XML elements:
-
In the userGuid attribute in the <userInfo> element, include the user GUID retrieved using the POST Login API.
-
In the <srcContent> and <destination> elements, include the source and destination information identified in the POST Client List API.
-
Set the inPlace attribute in the <destination> element to 1 to restore the data to its original location on the client.
-
For each file to restore, add a <filePaths> element. Add the path identified in the POST Browse API to the <val> attribute in the <filePaths> element. Path values must appear exactly as shown in the POST Browse response.
For example:
POST SearchSvc/CVWebService.svc/retrieveToClient HTTP/1.1
Host: client.mydomain.com
Accept: application/xml
Authtoken: QSDK 38568012f4d1e8ee1841d283a47aa3ba78e124ea58354b5fc60f4dab8a63347d05cf5552484dafda3bfa4c5db84e580b1cb37bcf8e65b39f7f8549a443e6f78a2c7be3f31b3d845e24776c835e498e8e883bb40c46bd15af4f40ca94e823acedcdd4e9659e74b34a07a85c4586cd2ed914b6dce015874783ef768fda78183a4208930954a377f66eb56c8b92cexampl4s437a19317ca6ce7f3233d5a01aca35dbad93468b833f2cf71010809006a937670adce711ca8be46638e8
Content-type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<DM2ContentIndexing_RetrieveToClientReq mode="2" serviceType="1">
<userInfo userGuid="8DDB1E31-53B0-46B0-AE2D-A5E5FC5916DE"/>
<header>
<srcContent clientId="2" appTypeId="33" instanceId="1" backupSetId="31" subclientId="41"/>
<destination clientId="2" clientName="devsrv" inPlace="1"/>
<filePaths val="\C:\Sample Backup\testdata\data2\rc"/>
<filePaths val="\C:\Sample Backup\testdata\data2\bottom_left.png"/>
</header>
<advanced restoreDataAndACL="1" restoreDeletedFiles="1"/>
</DM2ContentIndexing_RetrieveToClientReq>
All responses to restore requests return a job ID, for example, <DM2ContentIndexing_RetrieveToClientResp jobId="28075" />.
Out-of-Place Restore to the Same Client
Use this request to restore folders and files to a new location on the original client.
Send a POST retrieveToClient request with the restore information in the XML elements:
-
In the userGuid attribute in the <userInfo> element, include the user GUID retrieved using the POST Login API.
-
In the <srcContent> and <destination> elements, include the source and destination information identified in the POST Client List API.
-
Set the inPlace attribute in the <destination> element to 0 to restore the data to a new location.
-
In the val attribute in the <destPath> element, add the destination path. The data is restored to this destination path. If the new path does not exist on the client, the restore operation creates it.
-
For each file to restore, add a <filePaths> element. Add the path identified in the POST Browse API to the <val> attribute in the <filePaths> element. Path values must appear exactly as shown in the POST Browse response.
For example:
POST SearchSvc/CVWebService.svc/retrieveToClient HTTP/1.1
Host: client.mydomain.com
Accept: application/xml
Authtoken: QSDK 38568012f4d1e8ee1841d283a47aa3ba78e124ea58354b5fc60f4dab8a63347d05cf5552484dafda3bfa4c5db84e580b1cb37bcf8e65b39f7f8549a443e6f78a2c7be3f31b3d845e24776c835e498e8e883bb40c46bd15af4f40ca94e823acedcdd4e9659e74b34a07a85c4586cd2ed914b6dce015874783ef768fda78183a4208930954a377f66eb56c8b92cexampl4s437a19317ca6ce7f3233d5a01aca35dbad93468b833f2cf71010809006a937670adce711ca8be46638e8
Content-type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<DM2ContentIndexing_RetrieveToClientReq mode="2" serviceType="1">
<userInfo userGuid="8DDB1E31-53B0-46B0-AE2D-A5E5FC5916DE"/>
<header>
<srcContent clientId="2" appTypeId="33" instanceId="1" backupSetId="31" subclientId="41"/>
<destination clientId="2" clientName="devsrv" inPlace="0">
<destPath val="c:\restoretest\test1"/>
</destination>
<filePaths val="\c:\Sample Backup\testdata\data2\rc"/>
<filePaths val="\c:\Sample Backup\testdata\data2\bottom_left.png"/>
</header>
<advanced restoreDataAndACL="1" restoreDeletedFiles="1"/>
</DM2ContentIndexing_RetrieveToClientReq>
All responses to restore requests return a job ID, for example, <DM2ContentIndexing_RetrieveToClientResp jobId="28075" />.
Out-of-Place Restore to a Different Client
Use this request to restore folders and files to a different client.
Send a POST retrieveToClient request with the restore information in the XML elements:
-
In the userGuid attribute in the <userInfo> element, include the user GUID retrieved using the POST Login API.
-
In the <srcContent>, include the source information identified in the POST Client List API.
-
In the <destination> elements, include the destination client information. This should not match the client information in the <srcContent> element since this restore is to a different client.
-
Set the inPlace attribute in the <destination> element to 0 to restore the data to a new location.
-
In the val attribute in the <destPath> element, add the destination path. The data is restored to this destination path. If the new path does not exist on the client, the restore operation creates it.
-
For each file to restore, add a <filePaths> element. Add the path identified in the POST Browse API to the <val> attribute in the <filePaths> element. Path values must appear exactly as shown in the POST Browse response.
For example:
POST SearchSvc/CVWebService.svc/retrieveToClient HTTP/1.1
Host: client.mydomain.com
Accept: application/xml
Authtoken: QSDK 38568012f4d1e8ee1841d283a47aa3ba78e124ea58354b5fc60f4dab8a63347d05cf5552484dafda3bfa4c5db84e580b1cb37bcf8e65b39f7f8549a443e6f78a2c7be3f31b3d845e24776c835e498e8e883bb40c46bd15af4f40ca94e823acedcdd4e9659e74b34a07a85c4586cd2ed914b6dce015874783ef768fda78183a4208930954a377f66eb56c8b92cexampl4s437a19317ca6ce7f3233d5a01aca35dbad93468b833f2cf71010809006a937670adce711ca8be46638e8
Content-type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<DM2ContentIndexing_RetrieveToClientReq mode="2" serviceType="1">
<userInfo userGuid="8DDB1E31-53B0-46B0-AE2D-A5E5FC5916DE"/>
<header>
<srcContent clientId="2" appTypeId="33" instanceId="1" backupSetId="31" subclientId="41"/>
<destination clientId="4" clientName="devsrv10" inPlace="0">
<destPath val="c:\restoretest\test1"/>
</destination>
<filePaths val="\c:\Sample Backup\testdata\data2\rc"/>
<filePaths val="\c:\Sample Backup\testdata\data2\bottom_left.png"/>
</header>
<advanced restoreDataAndACL="1" restoreDeletedFiles="1"/>
</DM2ContentIndexing_RetrieveToClientReq>
All responses to restore requests return a job ID, for example, <DM2ContentIndexing_RetrieveToClientResp jobId="28075" />.
Restore Options
The following options are available for all restore operations.
Overwriting Existing Files
To overwrite files that exist on the destination client, send a POST retrieveToClient request with the unconditionalOverwrite attribute in the <advanced> element set to 1.
For example:
POST SearchSvc/CVWebService.svc/retrieveToClient HTTP/1.1
Host: client.mydomain.com
Accept: application/xml
Authtoken: QSDK 38568012f4d1e8ee1841d283a47aa3ba78e124ea58354b5fc60f4dab8a63347d05cf5552484dafda3bfa4c5db84e580b1cb37bcf8e65b39f7f8549a443e6f78a2c7be3f31b3d845e24776c835e498e8e883bb40c46bd15af4f40ca94e823acedcdd4e9659e74b34a07a85c4586cd2ed914b6dce015874783ef768fda78183a4208930954a377f66eb56c8b92cexampl4s437a19317ca6ce7f3233d5a01aca35dbad93468b833f2cf71010809006a937670adce711ca8be46638e8
Content-type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<DM2ContentIndexing_RetrieveToClientReq mode="2" serviceType="1">
<userInfo userGuid="8DDB1E31-53B0-46B0-AE2D-A5E5FC5916DE"/>
<header>
<srcContent clientId="2" appTypeId="33" instanceId="1" backupSetId="31" subclientId="41"/>
<destination clientId="2" clientName="devsrv" inPlace="1"/>
<filePaths val="\c:\Sample Backup\testdata\data2\rc"/>
<filePaths val="\c:\Sample Backup\testdata\data2\bottom_left.png"/>
</header>
<advanced unconditionalOverwrite="1" restoreDataAndACL="1" restoreDeletedFiles="1"/>
</DM2ContentIndexing_RetrieveToClientReq>
Restoring Specific Versions of Files
To restore a specific version of a file instead of the latest backed up version, send a POST retrieveToClient request with a timestamp in the toTime attribute in the <srcContent> element.
To find the timestamp for the correct version, send a POST Browse request with the opType attribute in the <databrowse_BrowseRequest> element set to 2. In the POST Browse response, use the value in the backupTime attribute in the <advancedData> element as the timestamp for the POST retrieveToClient request.
For example:
POST SearchSvc/CVWebService.svc/retrieveToClient HTTP/1.1
Host: client.mydomain.com
Accept: application/xml
Authtoken: QSDK 38568012f4d1e8ee1841d283a47aa3ba78e124ea58354b5fc60f4dab8a63347d05cf5552484dafda3bfa4c5db84e580b1cb37bcf8e65b39f7f8549a443e6f78a2c7be3f31b3d845e24776c835e498e8e883bb40c46bd15af4f40ca94e823acedcdd4e9659e74b34a07a85c4586cd2ed914b6dce015874783ef768fda78183a4208930954a377f66eb56c8b92cexampl4s437a19317ca6ce7f3233d5a01aca35dbad93468b833f2cf71010809006a937670adce711ca8be46638e8
Content-type: application/xml
<?xml version="1.0" encoding="UTF-8"?>
<DM2ContentIndexing_RetrieveToClientReq mode="2" serviceType="1">
<userInfo userGuid="D2A3628E-9902-4CA4-A949-764B6B72283A"/>
<header>
<srcContent clientId="2" appTypeId="33" instanceId="1" backupSetId="3" subclientId="2" toTime="1379977369"/>
<destination clientId="2" clientName="lumen" inPlace="1"/>
<filePaths val="C:\Sample Backup\Test Data\versionstest.txt"/>
</header>
<advanced unconditionalOverwrite="1" restoreDataAndACL="1" restoreDeletedFiles="1"/>
</DM2ContentIndexing_RetrieveToClientReq>