I am in a situation where I have been charged with providing an application or an Umbraco extension, which makes backend users the ability to transfer their changes to the development site to the site in real time. This migration should be done once a day or when backend users click a button in the backend.
I know that Umbraco offers this in the Courier package, but apparently it doesn't work well enough for this case.
A few more details:
The development and live content site is located on the same server and therefore makes its own databases. The data just needs to be transferred from one folder to another and the same thing with tables in the database.
As I can see, there are two ways around this.
1) You perform a full migration, in which you basically make breaks of the live database and update it to the new version. Then you copy all the files you need.
2) You create a package containing types of documents, etc., you have changed on your developer's site and upload this package to the website.
The problem with number 1 is that you seem to have to retype the entire site when you made the translation. As I understand it, you can do this using webservice, but I would prefer to use a console application instead.
My question is:
Is there a way to programmatically create packages and load them the same way, or what would be the best way for this migration?
Any suggestions would be greatly appreciated, as I do not seem to understand how to do this :)
EDIT
In the end, I actually did a full mirror in the sense that I used Robocopy to transfer all the files that were changed in the folders, and then I made a backup copy of the development site using the SQL command, and then restored it to a live database using RESTORE SQL commands.
In SQL commands, you need to make several settings, but it runs smoothly, and a full transfer takes up to 10 seconds depending on the number of files that have been changed.
Last thing. If you want the changes to be visible, you need to restart Umbraco. This can be done by modifying the web.config file either manually or by choosing LastWriteTime programmatically.