Changes to the filesystem are represented at either the block, inode, or file level, and the snapshots can be maintained just as a series of manifest files and differential changes stored in the object storage system. In another embodiment, peer-to-peer file sharing protocols, such as ...