Thread has been going on in tools for a while now (http://www.hackint0sh.org/forum/showthread.php?t=35626) but I think that it's a such important piece of software that it should be in the native apps section;-)
iBackup - http://iBackup.up.to
Actually, doing the backup or restore is just a matter of 3 scp (secure copy) statements. But in order to make it easy to use and comfortable for what you might need it for, I added the following functions:
Standard backup includes files and settings for both "root" and the standard user "mobile" and all applications
Standard backup is incremental by default. Therefore, after the initial backup, every following run will be much faster because only changed files are copied again.
Additionally, a full*individual backup can be made and put into an archive in order to preserve different versions or installation states.
Standard restore is also differential and therefore only restores files that have changed from the archived state.
Additionally, a full*individual restore from a specific archive version can be performed.
*new* *For individual backups and restores, the Scope of the targeted data can be selected between Applications, root files and user files (in any combination).
*new* "Update mode" will preserve newer files during a restore to protect updated iPhone applications or to restore accidentially deleted files without setting back your other data to the (older) state of the backup.
*new* Version 2.0 incorporates a comfortable communications setup that takes care of the bumpy RSA setup and resolves other compatibility issues of different unix tools distributions on the iPhone/IPT."