Will Ubuntu One support OS Settings sync?

Being new to Linux and to Ubuntu, I've taken quite some time to tune it to my needs on my netbook. As I'm now convinced by the OS, I plan to install it on my desktop in the next few days. I was hoping that with Ubuntu One, after a sync, I would find back all my settings on the newly installed machine : system settings, language, list of installed programs (to quickly reinstall the same set), email chat and microblog accounts, Unity launcher shortcuts, etc...

I've just read trought the Ubuntu One website and it seems such a settings-sync feature is not part of it. Is this something that could be done? Is it planned? Is there another way to achieve this same effect?

Thanks in advance for any infos on that.


Ubuntu One does not currently support settings sync of arbitrary applications, although we're asked for it a lot. There are a couple of reasons for this. The major one is this: applications need to be written with settings sync in mind. If you take an arbitrary application, which stores its data in a configuration file, then that application is extremely unlikely to notice if Ubuntu One changes that configuration file while the application is running. Indeed, the app will almost certainly overwrite any Ubuntu One-made changes if you change the configuration of the app yourself.

A second issue is that applications do not distinguish between machine-specific settings and user-specific settings. If, for example, your app remembers the last files that it loaded, and you sync that list of recent files with Ubuntu One, what should other instances of that app (on other computers) do if those files are not present? If you save the app's window's position on your huge monitor, and then sync that setting to your netbook, how does the app cope with that? All of these things are certainly handleable within the app, but many apps don't actually realise that they may need to handle them.

The issue here is not that settings sync is in itself hard, but that applications are not really built with the idea that the settings file may contain "impossible to create", unlikely, or contradictory settings, and that the settings file may change at any time.

Some applications are set up to deal with this, and as part of the Ubuntu One application developer programme I'd be happy to talk to any application developer who would like their app to have syncable settings, to work out how best to do it for that app.


I have a similar problem I have a netbook that has all my current data & settings on it & I want my desktop software & files to be the same.

This is how I fixed my problem.

Let's call the computer with all the original data on it (in my case the netbook) the source & the computer that you want to get the data to the target.

Step 1). Make sure the source system is up to date

sudo aptitude update && sudo aptitude upgrade

Step 2). BACKUP the source user files. There are lots of different ways to do this. This is a good article on backing up. I also have a few articals on backing up in the IT section of my website www.marchiggins.com.

Personally, I choose rsync for this kind of task.

rsync -av /source_directory /target_directory

Depending on the destination you are going to backup your data to you need to run something like this on the source computer;

rsync -av /home/ /media/USB
rsync -av /usr/local /media/USB
cp /etc/apt/sources.list /media/USB

Technically in addition to the above you should also be getting your whole /etc directory & everything in /var (except /var/cache & /var/tmp) but I never bother. As you can see above I do make sure I get a copy of my /etc/apt/sources file.

Then we need to check what additional software is installed on the source computer. Again there are several ways you can do this but this is how I do it.

dpkg --get-selections > /media/USB/installed-software

Will create a file called installed-software that contains all the packages that you have installed.

Step 3). build the target computer & make sure it is the same OS version as the source computer. You can check your version number like this;

cat /etc/lsb-release

Step 4). Once the target has been built, you need to;

setup the users;

sudo adduser

copy the sources.list

sudo cp /media/USB /etc/apt/sources.list

& them make sure everything is up to date, just as we did in step 1)

sudo aptitude update && sudo aptitude upgrade

Step 6). Copy across all of your data, just as we did in step two except in reverse

sudo rsync -av /media/USB /home/
sudo rsync -av /media/USB /usr/local

Now you need to make sure the user ownership permissions on the home directories are set;

sudo chown -R username:username /home/pathtofolder

Step 7). Copy the installed-software file across to the Target computer & run the following to install all the software you had on the source machine to the target machine

sudo aptitude install dselect    
cp /media/USB/installed-software /
dpkg --set-selections < installed-software
sudo dselect

Select 3. [I]nstall Install & Upgrade Wanted Packages

At this point you should have two computers that are the same.

From here you can use unison to keep them in sync or rsync. My preference again is rysnc but many people I know use unison & swear by it.