Keeping multiple computers in sync


(Daniel Hollands) #1

I’ve got two computers that I use on a weekly basis:

  • an iMac sat on my desk at home, which I use on a daily basis for work
  • a Macbook which I take into the office, and occasionally use on the sofa and/or out and about

Both of these are working pretty well, but suffer from the issue of becoming desynchronised from one another. That is, the software and settings one one of them doesn’t exactly match that of the other.

My question is this: what techniques are people employing to solve this problem?

In my travels around the web I’ve found three potential solutions:

thoughtbot laptop

This is an opinionated bash script which the good folk at thoughtbot use to quickly onboard new members of staff with the software they need. It’s possible to be run multiple times on the same machine without screwing things up (allowing for updates, etc…)

This is fine I guess, if you’re working for thoughtbot (or use a lot of their tools, such as I do), but even with the ability to add customisation via a ~/.laptop.local file, it’s a little dense and unfriendly, and doesn’t really solve the issue of keeping settings in sync with each other.

bkuhlmann/mac_os

Like laptop above, this is a bash-based solution to that of setting up a mac with required software. It’s a bit more complex than laptop, but that offers a lot more power for customisation, by providing a config template which you can clone and change as required.

Similar to laptop, you’re able to run it multiple times, so again, in theory, it could be used to keep a laptop up to date with the latest versions of software (i.e. doing all updates via the config template, and running it on both machines).

I’ve not tried this one yet, but I have a feeling it’s a little closer to a solution to my problem than laptop.

jamf

Now I’d not heard of this before yesterday (and haven’t used it), and in truth, this is the source of this post. It appears to be some type of remote management tool, wherein you install a client on a device, and that manages everything for you. I like the idea of this in theory, but I’m not sure if I like the idea of giving that sort of control over an external entity (at least the two above can only do anything when I choose to run them, and they’re both open source).

Unlike the two above, this suggests it should be able to keep your config in sync as well, although I’m not sure how keep this goes (for example, I doubt it’s able to set-up RubyMine to work in exactly the way that I like).


Anyway, these are a few potential options I’ve found to solve the problem, and I’ll be looking to employ at least one of them (probably mac_os), but before I do, I’d like to hear what options solutions for this might exist.

Thanks :slight_smile:


(Matt Andrews) #2

What stuff are you trying to keep in sync? I’d be wary of a one-size-fits-all approach. For me I use Firefox sync to keep my work/home browser linked up, and a WebStorm plugin which syncs settings etc. I use git to manage my bash/zsh profiles across machines.


(Daniel Hollands) #3

I guess there are two levels to this. The first is the software I use (both of which are easily fixed via the first two solutions), and the second are the settings for said software.

I already do this for software like Alfred. I wasn’t aware such a plugin existed for JetBrains, I shall have to see if it’s compatible with RubyMine, if so that’ll solve that problem :slight_smile:

I’ve seen a few solutions to that of syncing dotfiles (the one which springs to mind is thoughtbot’s offering) What do you use (or is it handled manually?). I don’t really have a lot of customisation to my dotfiles, but maybe I should.


(Matt Andrews) #4

Yeah, give this a look for Jetbrains, works well for me.

The dotfiles one is manual, I just do a git pull when I know I’ve tweaked stuff. Would be nice if it was more automated but by the same token I have some stuff on my work machine that I don’t want on my personal one etc, so it’s a fairly manual task anyway.


(Omar Qureshi) #5

Another alternative is boxen

However, I haven’t touched it in a long time - the good news is, it is just Puppet


#6

Mackup is pretty good for syncing settings between multiple Macs. It doesn’t install all of the software for you but it does solve syncing settings.


(Andy Wootton) #7

I keep non-confidential stuff in Dropbox then use it from a couple of machines so copies are made and as a personal-stupidy prevention, I occasionally backup locally to a removeable disc. Downloads are faster than uploads. Only bad news is that there’s no ‘native’ Dropbox for Pi.

Since most of my stuff is text, I might move it to a git server for version control.

No-one has mentioned rsync. Is it the underlying mechanism of some of these or has it been superceded?