You can't. This is a very
long discussion but it comes down to the following issues which make it an non-well-defined problem to solve:
- Tracking file changes. The only way to tell if a file has changed, added or deleted is holding a list of all files with their modified dates and SHA-1 hashes and compare it to the current filesystem status before taking a backup. This is a very lengthy and intensive process, 5x slower than taking a full site backup. We already know that from our experience with Admin Tools' PHP File Change Scanner. This would cause the backup to fail on most servers. In the best case scenario it would cause the server to be almost unresponsive while the backup takes place. That's unacceptable.
- Tracking database changes. Simply put: not possible. One would have to back up the database, restore it in a temporary database and compare it against the last known copy of the database (which means that you have to restore the entire site's database on a third database on the server). Then you need to scan the table row by row and sort out which rows have been added, removed and modified. This is 10x slower than backing up the database and requires hundreds of Gigabytes (yes, Gigabytes) of memory to run. Of course this is unacceptable as it would make the backup fail, not to mention that it's outright impractical.
- Restoration strategy. Even if you somehow managed to store these file and database deltas you would have a problem restoring the site. You'd need to first restore the full site backup, then all the deltas in the same order they were taken. This would eventually become more than 1000x slower than restoring a full site backup in the period of one month of daily backups – if not for any other reason, uploading so many deltas and running N restorations in the correct order is dead slow and error prone.
For these simple reasons such a feature is not going to be ever pursued. There are other more technical reasons –depending on which site building solution you are using such as Joomla!, WordPress, Magento etc– but we don't even have to go there. If an idea fails the basic sanity check we don't have to go into the technicalities of nested sets, foreign keys, data consistency and so on.
Nicholas K. Dionysopoulos
Lead Developer and Director
🇬🇷Greek: native 🇬🇧English: excellent 🇫🇷French: basic • 🕐 My time zone is Europe / Athens
Please keep in mind my timezone and cultural differences when reading my replies. Thank you!