Good tools for keeping content in test / staging / live environments in sync
I'm looking for recommendations for automatic folder sync tools to keep content in our three environments automatically synced.
Specifically, we have several applications where the user can download content (via a file download page or similar mechanism), such as images, pdf files, text documents, etc. We used to have a user, our live server, and as a result, our test and staging servers had to sync manually.
In the future, we will be uploading content to a staging server, and we would like some software to automatically copy files to test and live servers on schedule or as files are uploaded.
I was planning to write my own component and either set it up as a scheduled task or use the FileSystemWatcher, but it occurred to me that this was probably already done and I might be better off with some kind of sync tool that already exists.
There are a limited number of folders on our website that we want to sync. These folders are all or nothing - we want to make sure the folders are EXACT duplicates. That should make it pretty straightforward, and I think any software that can sync folders would be fine, except that we would also like the software to log changes. (This excludes plain BATCH files.)
So, I'm curious if you have a similar environment how you solved the problem of keeping in sync. Do you know about a reliable tool and will you meet our needs? If not, do you have a recommendation for what comes close, or better yet, an open source solution where we can get the code and change it as needed? (.NET preferred).
Added
Also, I did it on Google first, but there are so many options, I'm mainly interested in what actually works well and what they say, which is why I ask here.
Added more
I forgot to point out that these are Windows servers. (Windows Server 2003, to be exact) Sorry.
a source to share
If you want to do it on a schedule, I used SyncBackSE for this - it will sync multiple folders (or FTP sites) in any direction and might be what you are looking for. However, this is a scheduled task and I don't think it can be run on demand (although the Pro version probably supports it).
a source to share
unison is a good sync tool, but only supports two copies per run. To sync three sites, you will need to do A ↔ B, B ↔ C, A ↔ C.
I would suggest using git. Make a repo on each site and automate with git-add
, git-rm
and git-commit
to commit to each repo the current state of the environment. Auto push on and off between repositories when you want to sync.
a source to share