A method of generating an update for a computer readable operating system, the method comprising: identifying a version number of a current version of the operating system; creating, with a processor, an ordered list of operations for updating the current version of the operating system to a new version of the operating system, each operation in the ordered list is applicable to one or more specific data blocks of a partition of a client device (302, 306, 308, 310, 312), and one or more operations in the ordered list of operations are each associated with a respective data blob indicating a chunk of data, the ordered list of operations being created by the processor performing iterations over each regular file on the new version of the operating system to obtain the ordered list of operations such that each operation in the ordered list corresponds to the optimal way to compress the one or more specific data blocks for that operation in order to reduce a size of a differential update file by selecting one of the following operations: a copy operation where at least one of the data blocks in the partition is to be copied to another block in a new partition of the client device for the new version of the operating system; a difference operation where at least a given one of the data blocks is read into memory and a difference routine is performing on the at least one given data block using a data blob of the differential update file; a replace operation where a selected data blob of the differential update file is configured to be written to specified blocks in the new partition; and a replace with uncompression operation where a compressed data blob is included in the differential update file and is configured to be written to selected specified blocks in the new partition for the new version of the operating system; and assembling, with the processor, the differential update file including a magic number indicator showing the differential update file is an actual update file, a new version number identifying the new version of the operating system, a protocol buffer including the ordered list of operations, and the respective data blobs. identifying a version number of a current version of the operating system; creating, with a processor, an ordered list of operations for updating the current version of the operating system to a new version of the operating system, each operation in the ordered list is applicable to one or more specific data blocks of a partition of a client device (302, 306, 308, 310, 312), and one or more operations in the ordered list of operations are each associated with a respective data blob indicating a chunk of data, the ordered list of operations being created by the processor performing iterations over each regular file on the new version of the operating system to obtain the ordered list of operations such that each operation in the ordered list corresponds to the optimal way to compress the one or more specific data blocks for that operation in order to reduce a size of a differential update file by selecting one of the following operations: a copy operation where at least one of the data blocks in the partition is to be copied to another block in a new partition of the client device for the new version of the operating system; a difference operation where at least a given one of the data blocks is read into memory and a difference routine is performing on the at least one given data block using a data blob of the differential update file; a replace operation where a selected data blob of the differential update file is configured to be written to specified blocks in the new partition; and a replace with uncompression operation where a compressed data blob is included in the differential update file and is configured to be written to selected specified blocks in the new partition for the new version of the operating system; and a copy operation where at least one of the data blocks in the partition is to be copied to another block in a new partition of the client device for the new version of the operating system; a difference operation where at least a given one of the data blocks is read into memory and a difference routine is performing on the at least one given data block using a data blob of the differential update file; a replace operation where a selected data blob of the differential update file is configured to be written to specified blocks in the new partition; and a replace with uncompression operation where a compressed data blob is included in the differential update file and is configured to be written to selected specified blocks in the new partition for the new version of the operating system; and assembling, with the processor, the differential update file including a magic number indicator showing the differential update file is an actual update file, a new version number identifying the new version of the operating system, a protocol buffer including the ordered list of operations, and the respective data blobs.