A computing device comprising: a memory comprising machine executable code; and a processor coupled to the memory , the processor configured to execute the machine executable code to cause the processor to: store snapshot data of a first snapshot into a first object formatted according to an object format; assign a first expiry time to the first object based upon a first creation time of the first snapshot and a retention time; store the first object within a remote object store , wherein the first object is retained in an immutable state and cannot be deleted until expiration of the first expiry time ; store snapshot data of a second snapshot into a second object formatted according to the object format; assign a second expiry time to the second object based upon a second creation time of the second snapshot and the retention time; store the second object within the remote object store , wherein the second object is retained in the immutable state and cannot be deleted until expiration of the second expiry time ; and in response to determining that the second snapshot references shared snapshot data within the first object , modify the first expiry time of the first object to be the second expiry time of the second object . a memory comprising machine executable code; and a processor coupled to the memory , the processor configured to execute the machine executable code to cause the processor to: store snapshot data of a first snapshot into a first object formatted according to an object format; assign a first expiry time to the first object based upon a first creation time of the first snapshot and a retention time; store the first object within a remote object store , wherein the first object is retained in an immutable state and cannot be deleted until expiration of the first expiry time ; store snapshot data of a second snapshot into a second object formatted according to the object format; assign a second expiry time to the second object based upon a second creation time of the second snapshot and the retention time; store the second object within the remote object store , wherein the second object is retained in the immutable state and cannot be deleted until expiration of the second expiry time ; and in response to determining that the second snapshot references shared snapshot data within the first object , modify the first expiry time of the first object to be the second expiry time of the second object . store snapshot data of a first snapshot into a first object formatted according to an object format; assign a first expiry time to the first object based upon a first creation time of the first snapshot and a retention time; store the first object within a remote object store , wherein the first object is retained in an immutable state and cannot be deleted until expiration of the first expiry time ; store snapshot data of a second snapshot into a second object formatted according to the object format; assign a second expiry time to the second object based upon a second creation time of the second snapshot and the retention time; store the second object within the remote object store , wherein the second object is retained in the immutable state and cannot be deleted until expiration of the second expiry time ; and in response to determining that the second snapshot references shared snapshot data within the first object , modify the first expiry time of the first object to be the second expiry time of the second object . <EOS>