Bittorent sync is a “Dropbox without a centralized server” kind of thing (check it out at http://labs.bittorrent.com/experiments/sync.html).
It’s a small app that keeps folders across different machines in sync using a shared “secret” (random 34 character key) and doing that via bittorrent protocol, inside firewalls, NAT…
You just need to choose which folder(s) to sync on the first machine and reuse that secret key when creating the destination folder on another machine.
As long as you do not share your secret key with anyone else, your data is safe and kept only on machines that have the same secret key (the traffic is encrypted endpoint-to-endpoint).
The cool thing is that you do not need to use ftp, setup vpn, remote desktop to your server, etc., it all works the same as with Dropbox; just copy the files into a shared folder and they pop-up at the other side.
To deploy your website:
1. Create a folder where you will put the deployment files: let’s call that folder C:\deployment
2. Share C:\deployment via bittorrent sync
3. Define a shared folder on your web server that points to the website root (use the same secret key as in step 2)
4. Voila, everything you copy to C:\deployment will end up deployed on your web server
5. Optionally, you can create a readonly copy of your production web site for backup purposes (bittorrent sync even keeps the deleted files for a defined period of time – 30 days by default)
At step 3, you can use a read-only key, so that your changes are propagated one way (C:\deployment -> web server).
The default behavior is a two-way sync (C:\deployment <-> web server).
There are a few caveats…
You need to be able to install software on your server (which means you need to have an admin access to your windows/linux box).
Bittorrent sync windows client cannot be run as a service out of the box, although there is a workaround: http://forum.bittorrent.com/topic/18326-start-sync-as-service-on-windows/
That’s no problem on linux machines as there is a bittorrent sync daemon.
Keep in mind that while the sync is in progress, asp.net will crash down while the *.dll files are only partially uploaded; you should stop your website or use an app_offline.html while the sync is in progress (if you have only one web server and are using asp.net).