Synco Documentation

  1. Introduction
  2. Installation
  3. Concepts
  4. Backup Policy
  5. Storage Solutions
  6. Backup Scripts
  7. Basic Server Backup
  8. Backup Staging
  9. DNS Indirection
  10. Server Synchronization

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.

Synco 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 Synco 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 Synco implementation for the above diagram would look something like this:


$script = Synco::Script.new do |script|
	# Use rsync snapshot method
	script.method = Synco::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.