A method for backing up data in a plurality of computers connected via a
network. The method includes forming partnerships between the plurality
of computers such that each computer in a partnership commits under
agreements to help backup the data of its partners. The method further
includes periodically verifying that previously backed up data is being
retained by the computers committed to act as backup partners in
accordance with the agreements. In another embodiment, the method
provides a distributed cooperative backing up of data in a system that
includes a loose confederation of computers connected via a network. In
this embodiment the method includes selecting computers as potential
backup partners from among the loose confederation of computers connected
via the network based on predetermined criteria, and negotiating a
reciprocal backup partnership agreement between the computers based on
predetermined requirements, including backup requirements. Once the
negotiations are complete and the agreements are made, the method
proceeds to form partnerships between the computers. The computers become
backup partners by agreeing to cooperatively provide backup services to
each other so that a distributed cooperative backing up of data can be
administered in the absence of central control. The method further
includes periodically backing up data at the backup partners, where the
data being backed up is encoded. The method also includes periodically
verifying that previously backed up data is retained by the backup
partners. Another aspect of the invention is a distributed cooperative
backup system that includes a network and a loose confederation of
computers connected via the network. A plurality of computers from among
the loose confederation of computers is configured for distributed
cooperative backing up of data and for functioning as backup partners.
Each computer of the plurality of computers has a storage that can be
used for providing reciprocal backup services. Each computer of the
plurality of computers respectively also has a computer readable medium
embodying computer program code configured to cause the computer to
perform functions comparable to the method steps as described above.