# US 12,182,440 B2 · Cloud-native cross-environment restoration

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,182,440 B2
- Document ID: US12182440B2
- Status: Granted
- Kind: B2
- Application number: 17/200,205
- Filed: 2021-03-12
- Published: 2022-09-15
- Granted: 2024-12-31
- Earliest claimed: 2021-03-12
- Assignees: Kasten, Inc.
- Applicants: Kasten, Inc.
- Inventors: Aaron H. Alpar; Thomas Manville; Eric William Hamilton; Vaibhav Kamra; Niraj Tolia
- Web page: https://patentgrep.com/patent/US12182440B2

## CPC

- G06F 3/0653: {Monitoring storage devices or systems}
- G06F 11/1448: {Management of the data involved in backup or backup restore}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 8/63: {Image based installation; Cloning; Build to order}
- G06F 8/76: Adapting program code to run in a different environment; Porting
- G06F 11/1469: {Backup restoration techniques}
- G06F 11/3698: Environments for analysis, debugging or testing of software
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Disclosed herein are system, method, and computer program product embodiments for transforming backups of applications. An embodiment operates by extracting a resource snapshot into memory. The resource snapshot is formatted in a first configuration. An embodiment performs a transformation on the resource snapshot, thereby transforming the resource snapshot from the first configuration to a second configuration for an environment into which the resource snapshot is being restored. The transformation is made up of a set of operations. One of the operations includes a regular expression. Once the transformation is complete, the resource snapshot is restored to the environment based on the second configuration.

## Claims

### Claim 1

A method for restoring an application, comprising:
extracting, by a processor, a resource snapshot into a memory, wherein the resource snapshot is a hierarchical structure in textual form that specifies a first resource configuration indicating where portions of the application are accessed in a first cloud environment;
performing, by the processor, a transformation, comprising a set of Modified JavaScript Object Notation (JSON) Patch operations, on the resource snapshot, thereby transforming the resource snapshot from the first resource configuration to a second resource configuration indicating where portions of the application are accessed in a second cloud environment, wherein performing the transformation comprises performing each Modified JSON Patch operation from the set of Modified JSON Patch operations in sequence, and wherein performing a Modified JSON Patch operation from the set of Modified JSON Patch operations comprises:
selecting, using a regular expression, a plurality of strings in a path in the resource snapshot or a plurality of values in the path in the resource snapshot as a capture group; and
applying the Modified JSON Patch operation to the resource snapshot using the capture group; and
restoring, by the processor, the application to the second cloud environment based on the transformed resource snapshot specifying the second resource configuration.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
determining, by the processor, that performance of the transformation succeeded; and
wherein restoring the application to the second cloud environment comprises restoring the application to the second cloud environment in response to determining that the performance of the transformation succeeded.

### Claim 3 (depends on 2)

The method of claim 2, wherein determining that the performance of the transformation succeeded comprises determining, using at least one test operation, that the resource snapshot is formatted in the second resource configuration.

### Claim 4 (depends on 1)

The method of claim 1, wherein another Modified JSON Patch operation from the set of Modified JSON Patch operations in the transformation includes a path reference or a value reference with a wildcard character.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
receiving, by the processor, a selection of the second cloud environment;
detecting, by the processor, the second resource configuration for the second cloud environment; and
outputting, by the processor, a description of the second resource configuration to a user.

### Claim 6 (depends on 5)

The method of claim 5, wherein detecting the second resource configuration comprises detecting, using at least one test operation, one or more paths of the second resource configuration in the second cloud environment.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
receiving, by the processor, a selection of the second cloud environment;
detecting, by the processor, the second resource configuration for the second cloud environment; and
selecting, by the processor, the transformation based on the second resource configuration.

### Claim 8 (depends on 7)

The method of claim 7, wherein detecting the second resource configuration comprises detecting, using at least one test operation, one or more paths of the second resource configuration in the second cloud environment.

### Claim 9

A system, comprising:
a processor; and
a memory communicatively coupled to the processor, wherein the memory stores instructions configured to, when executed, cause the processor to:
extract a resource snapshot into the memory, wherein the resource snapshot is a hierarchical structure in textual form that specifies a first resource configuration indicating where portions of the application are accessed in a first cloud environment;
perform a transformation comprising a set of Modified JavaScript Object Notation (JSON) Patch operations on the resource snapshot, thereby transforming the resource snapshot from the first resource configuration to a second resource configuration indicating where portions of the application are accessed in a second cloud environment, wherein performing the transformation comprises performing each Modified JSON Patch operation from the set of Modified JSON Patch operations in sequence, and wherein performing a Modified JSON Patch operation from the set of Modified JSON Patch operations comprises:
selecting, using a regular expression, a plurality of strings in a path in the resource snapshot or a plurality of values in the path in the resource snapshot as a capture group; and
applying the Modified JSON Patch operation to the resource snapshot using the capture group; and
restore the application to the second cloud environment based on the transformed resource snapshot specifying the second resource configuration.

### Claim 10 (depends on 9)

The system of claim 9, wherein the instructions are further configured to:
determine that performance of the transformation succeeded; and
wherein restoring the application to the second cloud environment comprises restoring the application to the second cloud environment in response to determining that the performance of the transformation succeeded.

### Claim 11 (depends on 10)

The system of claim 10, wherein the instructions being further configured to determine that the performance of the transformation succeeded comprises determining, using at least one test operation, that the resource snapshot is formatted in the second resource configuration.

### Claim 12 (depends on 9)

The system of claim 9, wherein another Modified JSON Patch operation from the set of Modified JSON Patch operations in the transformation includes a path reference or a value reference with a wildcard character.

### Claim 13 (depends on 9)

The system of claim 9, wherein the instructions are further configured to:
receive a selection of the second cloud environment;
detect the second resource configuration for the second cloud environment; and
output a description of the second resource configuration to a user.

### Claim 14 (depends on 13)

The system of claim 13, wherein the instructions are further configured to detect, using at least one test operation, one or more paths of the second resource configuration in the second cloud environment.

### Claim 15 (depends on 9)

The system of claim 9, wherein the instructions are further configured to:
receive a selection of the second cloud environment;
detect the second resource configuration for the second cloud environment; and
select the transformation based on the second resource configuration.

### Claim 16 (depends on 15)

The system of claim 15, wherein the instructions are further configured to detect, using at least one test operation, one or more paths of the second resource configuration in the second cloud environment.

### Claim 17

A non-transitory computer readable storage medium having computer readable code thereon, the non-transitory computer readable storage medium including instructions configured to cause a computer system to perform operations, comprising:
extracting a resource snapshot into a memory, wherein the resource snapshot is a hierarchical structure in textual form that specifies a first resource configuration indicating where portions of the application are accessed in a first cloud environment;
performing a transformation comprising a set of Modified JavaScript Object Notation (JSON) Patch operations on the resource snapshot, thereby transforming the resource snapshot from the first resource configuration to a second resource configuration indicating where portions of the application are accessed in a second cloud environment, wherein performing the transformation comprises performing each Modified JSON Patch operation from the set of Modified JSON Patch operations in sequence, and wherein performing a Modified JSON Patch operation from the set of Modified JSON Patch operations comprises:
selecting, using a regular expression, a plurality of strings in a path in the resource snapshot or a plurality of values in the path in the resource snapshot as a capture group; and
applying the Modified JSON Patch operation to the resource snapshot using the capture group; and
restoring the application to the second cloud environment based on the transformed resource snapshot specifying the second resource configuration.

### Claim 18 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, the operations further comprising:
determining, using at least one test operation, that performance of the transformation succeeded, wherein the at least one test operation detects that the resource snapshot is formatted in the second resource configuration; and
wherein restoring the application to the second cloud environment comprises restoring the application to the second cloud environment in response to determining that the performance of the transformation succeeded.

### Claim 19 (depends on 17)

The non-transitory computer-readable storage medium of claim 17 wherein another Modified JSON Patch operation from the set of Modified JSON Patch operations in the transformation includes a path reference or a value reference with a wildcard character.

### Claim 20 (depends on 17)

The non-transitory computer-readable storage medium of claim 17 the operations further comprising:
receiving a selection of the second cloud environment;
detecting, using at least one test operation, the second resource configuration for the second cloud environment, wherein the at least one test operation detects one or more paths of the second resource configuration in the second cloud environment; and
outputting a description of the second resource configuration to a user.

### Claim 21 (depends on 1)

The method of claim 1, further comprising:
selecting the transformation from a transformation library based on the first cloud environment and the second cloud environment.

### Claim 22 (depends on 1)

The method of claim 1, wherein the extracting comprises:
decompressing the resource snapshot into the memory.
