1. A method of transferring a file from a source node to a terminal node comprising: obtaining, by the terminal node, capacity information concerning capacities of corresponding ones of a plurality of recipient nodes, wherein the capacity information includes available storage space in corresponding ones of the plurality of recipient nodes; determining a corresponding portion of the file to be obtained by each of the recipient nodes according to the capacity information; sending a request from the terminal node to each of the plurality of recipient nodes to request transfer of the respective determined portion of the file from the source node; receiving, by the terminal node from the plurality of recipient nodes, respective portions of the file obtained by the respective recipient nodes from the source node; and assembling the portions of the file received from the plurality of recipient nodes at the terminal node.