1. A data recovery system, comprising: a plurality of customer computers to be backed-up, each customer computer running a client software to communicate back-up data files including generating a first sub-file signature for one or more segments of a changed file; and subsequently generating another sub-file signature for each file segment and comparing them to detect insertions, removals, or rearrangements of data in the file and storing a plurality of signatures for each file locally on the computer representing the latest state of each file uploaded to a server; and transmitting one more changed segment(s) in the file, writing a manifest file reflecting the new target state as an incremental backup; compressing, encrypting and transmitting the changed segment through a Web-based Distributed Authoring and Versioning application program interface; expanding one or more patch sets and saving the patch sets with the file system to provide an incremental backup while generating a full backup; taking a snapshot after a full backup providing for a version history; mapping the file data and meta data to an arbitrary file system; and saving one or more snapshots of the meta data on the distributed meta data store for a subsequent reconstructing of files for the arbitrary file system; a system management platform coupled to the client software over the Internet, the system management platform receiving inputs from a web user portal to control operations of the client software and the system management platform to back up the customer computer; and two or more data storage silos, each including: a plurality of storage directors communicating with the client software; and a clustered data storage array, wherein the data storage array comprises Redundant Array of Independent Nodes (RAIN) 6 storage nodes that ensures that even if two storage nodes go down that data is still available and RAIN protects a node, or server, cluster from failure.