Code Monkey home page Code Monkey logo

mackup's Introduction

Mackup

Keep your application settings in sync.

Build Status Coverage Status

Quickstart

Install Dropbox first, it's needed.

On OS X, if you want an easy install, you can install Homebrew and do:

# Install Mackup
brew install mackup

# Launch it and back up your files in Dropbox
mackup backup

If not running OS X, or you don't like Homebrew, run on your current workstation:

# Download Mackup
curl -o mackup https://raw.github.com/lra/mackup/master/mackup.py

# Make it executable
chmod +x mackup

# Launch it and back up your files in Dropbox
./mackup backup

You're all set, and constantly backuped from now on.

Next, on any new workstation, install Dropbox and do:

# Download Mackup
curl -o mackup https://raw.github.com/lra/mackup/master/mackup.py

# Make it executable
chmod +x mackup

# Launch it and restore your files from Dropbox
./mackup restore

Done !

Install

# Download Mackup
curl -o mackup https://raw.github.com/lra/mackup/master/mackup.py

# Make it executable
chmod +x mackup

# Copy it to your path
sudo mv mackup /usr/bin/mackup

# Launch it
mackup backup

Upgrade

Same as Install:

# Download Mackup
curl -o mackup https://raw.github.com/lra/mackup/master/mackup.py

# Make it executable
chmod +x mackup

# Copy it to your path
sudo mv mackup /usr/bin/mackup

# Launch it
mackup backup

It will add support for any application you were missing before.

Uninstall

You can revert all your files to their original state.

# Just run this
mackup uninstall

This will move back any file from Dropbox to its original place in your home folder and destroy the Mackup folder in Dropbox.

Usage

mackup backup

Backup your application settings in Dropbox.

mackup restore

Restore your application settings on a newly installed workstation.

mackup uninstall

Revert any synced config file to its original state, and delete the Mackup folder in Dropbox. This will revert your system at pre-Mackup state.

mackup -h

Get some help, obvious...

What does it do ?

  • Backups your application settings in Dropbox
  • Syncs your application settings among all your workstations
  • Restores your configuration on any fresh install in one command line

By only tracking pure configuration files, it keeps the crap out of your freshly new installed workstation (No cache, temporary and locally specific files are transfered).

It also helps you spend more time doing real cool stuff, and less time setting you environment.

Bullsh*t, what does it really do to my files ?!

Let's take git as an example. Your settings for git are saved in your home folder, in the .gitconfig file.

Backup

When you launch mackup backup, here's what it's really doing:

  1. cp ~/.gitconfig ~/Dropbox/Mackup/.gitconfig
  2. rm ~/.gitconfig
  3. ln -s ~/Dropbox/Mackup/.gitconfig ~/.gitconfig

Now your git config is always backup and up to date on all your workstations.

Restore

When you launch mackup restore, here's what it's really doing:

  1. ln -s ~/Dropbox/Mackup/.gitconfig ~/.gitconfig

That's it, you got your git config setup on your new workstation.

mackup does the same for any supported application.

Supported Applications

You can add your favorite application by forking it and doing a Pull Request.

I don't understand, how can I get support for my beloved app ?

Open a new issue.

How can I tell Mackup to sync only one or two application ?

In your home folder, create a file named .mackup.cfg and add the application names to allow in the Allowed Applications section, one by line.

# Example, to only sync SSH and Adium:
[Allowed Applications]
SSH
Adium

A sample of this file is available for download:

cd
curl -o .mackup.cfg https://raw.github.com/lra/mackup/master/.mackup.cfg

Be careful, if you download it like this, Mackup will only try to sync SSH and Adium from now on !

How can I tell Mackup to not sync an application ?

In your home folder, create a file named .mackup.cfg and add the application names to ignore in the Ignored Applications section, one by line.

# Example, to not sync SSH and Adium:
[Ignored Applications]
SSH
Adium

A sample of this file is available for download:

cd
curl -o .mackup.cfg https://raw.github.com/lra/mackup/master/.mackup.cfg

Be careful, if you download it like this, Mackup will ignore SSH and Adium from now on !

Why did you do this ?!

Yesterday, I had a talk with Zach Zaro, complaining about the pain it is to reconfigure our Macbook each time we get a new one or install from scratch. That's a talk we already had months ago.

I change my workstation every X months. Each time I either loose the configuration of all the apps I use, or I just waste a bunch of hours getting setup like I was on my old box. I also spent a lot of time reconfiguring the same stuff again on all my workstations (home, work)

Boring...

Some people tried to solve the problem on the application layer, like Github's Boxen, but I feel like it solves a non problem: I don't really spend time installing stuff, mostly downloading: I spend time configuring it.

For years, I've used a personnal shell script that was copying known config files into Subversion, Git or Dropbox, and linked them into my home. But I felt a lot of us had the same problem: Making a more generic tool could help others and I could get help from others to support more apps in the tool.

So here comes Mackup, the little tool that will sync all your application configs to Dropbox.

And it's GPL of course.

What platform is supported ?

  • OS X
  • GNU/Linux

What's up with the weird name ?

Mackup is just a contraction of Mac and Backup, I suck at naming stuff, ok.

mackup's People

Contributors

lra avatar shrwnsan avatar vitorgalvao avatar orenshk avatar ediventurin avatar hakubo avatar star-szr avatar dhellmann avatar jannae avatar timcorcoran avatar tam-lin avatar suprememoocow avatar atipugin avatar we11adam avatar lachlancooper avatar kfinlay avatar saulshanabrook avatar walkertraylor avatar zmro avatar twsh avatar marcosero avatar adamstac avatar adamlogic avatar alanning avatar adeca avatar bitdeli-chef avatar dustinmm80 avatar hkaju avatar henriqueboaventura avatar louisrli avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.