For large files (like Ubuntu images) I use krusader to make backups or copy them somewhere on demand, but for small, hand-written files like configs, notes and scripts, I use bazaar (see below).
This way my stuff is
versioned
mirrored on three computers and
accessible anywhere (well, the ssh port is open on most firewalls I have encountered so far).
Syncing desktop, notebook and server with bzr#
For projects like “studying”, “wobsite”, “evaluations”, … I use a bzr branch on my server like so:
cd someproject
# first time setup (on desktop)
bzr init .
bzr push sftp://server/var/bzr/someproject
bzr bind sftp://server/var/bzr/someproject
# get it to notebook (still on desktop)
ssh notebook
bzr co sftp://server/var/bzr/someproject
exit
# on the road, without internet access (on notebook)
bzr unbind
bzr m "will merge it, when i come home"
# back at home, with internet access (on desktop)
ssh notebook
bzr bind
bzr update
bzr m "did some stuff on the road"
exit
cd someproject
bzr update
Assuming ~/someproject
is already versioned and I have internet access available, the workflow remains simple:
cd ~/someproject
bzr update
# do stuff
bzr m "did stuff"