1. A method for cloning files in a file system for a plurality of network devices, wherein at least one network device is operative to perform actions, comprising: in response to a request to clone a source file, generating at least one target file and generating at least one shadow store unless at least one existing shadow store is determined to be available; determining each data region in a set of data regions that comprise the source file wherein a data region in the set of data regions is a set of block address ranges; determining whether each data region in the source file is a source file data region or a shadow store data region; transferring each source file data block in each determined source file data region in the source file to the at least one shadow store without transferring preexisting reference blocks in the shadow store data regions to the at least one shadow store; generating a shadow store block in the at least one shadow store corresponding to each transferred source file data block; generating at least one reference block in a new shadow store data region for the source file that corresponds to each shadow store block, wherein each reference block replaces each corresponding source file data block in the source file; generating at least one other reference block in the new shadow store data region corresponding to each shadow store block that is included in each target file; and incrementing at least one reference count in the shadow store that corresponds to each generated reference block and each shadow store data region, wherein each target file is a clone of the source file that includes at least one reference block that references the shadow store.