Introduction
Data is a valuable and often irreplaceable asset. Because of this, it is important to protect data such that it continues to exist despite failure and loss of equipment.
Long term protection of data involves replication. This is because the probability of a catastrophic failure leading to data loss is reduced when said data is replicated across different storage systems.
LSync aims to provide a technically comprehensive platform for developing data backup and replication systems, including support for both online (realtime) and offline replication. It is designed to provide scalability and simplicity without compromising either.
A few notes...
While LSync can facilitate many kinds of data synchronsation, it isn't the only way to replicate data. Other solutions such as online database replication and hardware-based replication may be a better solution depending on your requirements. If you are considering a backup solution and need advice and support you may want to read some of the articles I've written on backup policy:
Finally, if you are still unsure about your situation and require a personal touch, please feel free to contact Lucid Information Systems, a company specialising in data management and backup that I work for.
An example...
Many systems provide essential services to the network and end users. In order to provide a reliable service, data may need to be replicated over multiple (potentially identical) hardware servers. In this case, it is unlikely for all hardware systems to fail simultaneously, and thus improved reliability can be achieved.

A LSync implementation for the above diagram would look something like this:
$script = LSync::Script.new do |script|
# Use rsync snapshot method
script.method = LSync::Methods::RSync.new(:push)
script.master = "server1.example.com"
server(:server1a) do |server|
server.host = "server1a.example.com"
server.root = "/"
end
server(:server1b) do |server|
server.host = "server1b.example.com"
server.root = "/"
end
server(:server1c) do |server|
server.host = "server1c.example.com"
server.root = "/"
end
backup('srv')
end
In order to handle CNAME redirection, RubyDNS could be used for detecting failure and automatically updating the DNS results.
Warranty
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Follow Me