Sync completely two ubuntu machines

Solution 1:

The Ubuntu Software Center has a package sync feature. Click File -> Sync between computers.

For two-way file sync without Ubuntu One, try Unison. Here are some instructions.

Solution 2:

As Michael K pointed out the packages you can keep in sync by doing:

dpkg --get-selections > <file>

Copy the file from source machine to destination using your favorite method then

dpkg --set-selections < <file>
apt-get dselect-upgrade

This way all the packages that were installed on one machine will be installed on the other further the packages that were removed on the source machine will be removed from the destination, so doing that is extraordinarily dangerous especially when syncing desktop to laptop since laptop may require certain drivers that desktop in general will not.

In my experience deploying standardized systems I can tell you that once the base build is put in place the synchronization of the packages is a very very rare thing predicated as Michael pointed out on hardware being identical and most importantly purpose being identical as well.

Solution 3:

Although your idea sounds nice, you probably do not want to synchronize everything ,various lock files and .xauthority for example.

You are better off identifying what files or data you want to synchronize.

You can then use any number of tools from rsync to unison.

You can use rsync to sycn your data. Both tools have a graphical front end

grsync

See:

Ubuntu wiki Unison

Ubuntu wiki rsync