Patent ID: 8255366

Claim:
A non-transitory computer-accessible storage medium storing program instructions executable to: restore a first file stored on a client computer system to a previous version of the first file, wherein the previous version of the first file is stored on a server computer system, wherein in restoring the first file the program instructions are executable to: determine a plurality of segments of the first file, wherein each segment of the first file corresponds to a corresponding segment of the previous version of the first file; determine whether each segment of the plurality of segments differs from its corresponding segment of the previous version of the first file; and restore each segment of the first file that differs from its corresponding segment of the previous version of the first file without restoring segments of the first file that do not differ from their corresponding segments of the previous version of the first file, wherein the program instructions are executable to restore each respective segment that differs from its respective corresponding segment of the previous version of the first file by obtaining the respective corresponding segment and changing the respective segment to the respective corresponding segment; wherein the plurality of segments includes a first segment that differs from a corresponding first segment of the previous version of the file, wherein the program instructions are executable to obtain the corresponding first segment by: in response to determining that an identical segment to the corresponding first segment was not found in other files stored on the client computer system, communicating with the server computer system to transfer the corresponding first segment from the previous version of the file stored on the server computer system to the client computer system via a network; and wherein the plurality of segments further includes a second segment that differs from a corresponding second segment of the previous version of the file, wherein the program instructions are executable to obtain the corresponding second segment without transferring the corresponding second segment from the server computer system by: determining that a second file stored on the client computer system includes a segment identical to the corresponding second segment; and reading the identical segment from the second file stored on the client computer system.