One of the challenges I’ve encountered over the years has been how to get heterogeneous servers to share information via file sharing over WAN. The traditional way was to use an RSYNC-like mechanism, common in the *nix world. On Windows machines I would use WinSCP, a simple scripting engine to transfer files via SFTP, which provides facilities very similar to RSYNC.
One of my main uses for file synchronization is to acquire registry snapshots of client machines and copy them to our central server for safekeeping. Another thing I use this for is to get daily copies of log files with important clients.
The only issue I have with RSYNC/WinSCP is that you need to setup the FTP server ahead of time. You have to open up several ports and it’s usually a hit-or-miss type of thing depending on whether you can use FTP directly or whether you need to use Passive FTP (PASV). In other words, it’s a bit of a pain to setup each time.
I wanted something that was almost as simple to use as Dropbox, but without the interim data storage where your files end up stored “in the cloud”.
Well I found it. Based on the bittorent protocol, BitTorrent Sync lets you do uni-directional or bi-directional file synchronization via AES 256 encryption over BitTorrent, by BitTorrent Labs.
http://labs.bittorrent.com/experiments/sync.html.
The installation process is pretty straightforward. All you have to do is run the installer on both the source machine and the target machine.
On the source machine, you would select “Standard Setup” as the installation type:
Then, you would choose the initial folder you want to synchronize. In my case, it’s a mail server in the field where I grab log files and copy them to a receiving machine:
A secret will be generated You will need it on the receiving end.
On the receiving machine, you would already have BitTorrent Sync setup so you’d just need to go to the Shared folder tabs. You would ADD a new folder, put in the shared secret you got from the primary machine and select a location to dump the files.
Once done the files will immediately start synching. Since it’s a bi-directional sync, if you add a file on server B, it will be propagated to server A. If you delete a file on Server A, it will be deleted on Server B and vice-versa.
Change detection doesn’t occur immediately, but it really doesn’t have to most of the time. It isn’t meant for real time replication but it will keep folders in sync within a few seconds that a change occurs, which is “good enough” for most applications.
The only requirement for this tool to work is that the receiving machines have inbound ports to listen on. By default, during the install time, the application will pick one for you but you can manually change it to something else.
And that’s about it.
Thanks – this is exactly what I was looking for! I’m setting up a client’s new PC at my home office and wanted to get their data from their old PC over to it as simply as possible in advance of my visit to save on-site time. I have RDP access to their old machine. I will be using this technique for a number of projects!