A computer-implemented method for synchronizing a content item on a client device to one of two or more candidate content item block servers, comprising at the client device: determining a first content item block list comprising hashes computed from the content item blocks that make up the content item; sending the first content item block list to a metadata server; receiving, from the metadata server: identifiers of the two or more candidate content item block servers to which a content item namespace is assigned, the content item belonging to the content item namespace; and information about the two or more candidate content item block servers comprising, for each of the two or more candidate content item block servers: a need content item block list for the candidate content item block server, the need content item block list being determined based in part on the first content item block list, the need content item block list comprising any content item block hashes in the first content item block list that are missing from a second content item block list of the candidate content item block server, the second content item block list comprising hashes that identify the content item blocks stored at the candidate content item block server and optionally one or both of: network performance information for the candidate content item block server; and block server load information for the candidate content item block server; selecting one of the two or more candidate content item block servers as a target content item block server based on the information about the two or more candidate content item block servers; and uploading, to the target content item block server, any missing content item blocks of the content item. determining a first content item block list comprising hashes computed from the content item blocks that make up the content item; sending the first content item block list to a metadata server; receiving, from the metadata server: identifiers of the two or more candidate content item block servers to which a content item namespace is assigned, the content item belonging to the content item namespace; and information about the two or more candidate content item block servers comprising, for each of the two or more candidate content item block servers: a need content item block list for the candidate content item block server, the need content item block list being determined based in part on the first content item block list, the need content item block list comprising any content item block hashes in the first content item block list that are missing from a second content item block list of the candidate content item block server, the second content item block list comprising hashes that identify the content item blocks stored at the candidate content item block server and optionally one or both of: network performance information for the candidate content item block server; and block server load information for the candidate content item block server; identifiers of the two or more candidate content item block servers to which a content item namespace is assigned, the content item belonging to the content item namespace; and information about the two or more candidate content item block servers comprising, for each of the two or more candidate content item block servers: a need content item block list for the candidate content item block server, the need content item block list being determined based in part on the first content item block list, the need content item block list comprising any content item block hashes in the first content item block list that are missing from a second content item block list of the candidate content item block server, the second content item block list comprising hashes that identify the content item blocks stored at the candidate content item block server and optionally one or both of: network performance information for the candidate content item block server; and block server load information for the candidate content item block server; a need content item block list for the candidate content item block server, the need content item block list being determined based in part on the first content item block list, the need content item block list comprising any content item block hashes in the first content item block list that are missing from a second content item block list of the candidate content item block server, the second content item block list comprising hashes that identify the content item blocks stored at the candidate content item block server and optionally one or both of: network performance information for the candidate content item block server; and block server load information for the candidate content item block server; selecting one of the two or more candidate content item block servers as a target content item block server based on the information about the two or more candidate content item block servers; and uploading, to the target content item block server, any missing content item blocks of the content item.