From: dbucklin@sdf.org Date: 2017-03-24 Subject: Backing up dotfiles with stow and git Whether you've been a ix user for a long time or are just starting out, you know that your configuration files are important to cus- tomizing your experience. You spend a lot of time setting up soft- ware and tweaking your configuration files, so it makes sense to keep them organized and back them up in case something bad happens. It would also be nice to be able to quickly deploy these configura- tions in a new environment. We can accomplish both of these goals with stow and git. Dotfiles Configuration files (called dotfiles because their names often be- gin with ".") contain important information that tells your in- stalled programs how you want them to run. Some of these files get groomed and perfected over time as their users make adjustments to their workflows. Keeping track of them can be difficult because there is no standard repository for these files. Some of them wind up in your home directory, some are stored under ~/Library/Applica- tion Support. Some config files even get their own folder. GNU stow GNU stow allows you to organize all of your dotfiles into a single folder tree. Stow will create symbolic links to these files in all the right places. Using GNU stow to manage your dotfiles[1] by Brandon Invergo does an excellent job of explaining how to use stow for this purpose. It can be a little nerve-wracking to move your configuration files around. If it's practical, consider tarring your home directory so that you can restore it in the unlikely event that things go awry. On OSX, I had to install GNU stow using brew: `$brew install stow` I also found that reading the manpage for stow provided some addi- tional insight into using stow for this and other purposes. git and Dropbox Now that all of your configuration files are consolidated into a single folder, you can use git to track changes over time and also to back your files up to a remote location. In this example, I'm using Dropbox, but this is transparent to git. As far as git is concerned, I'm pushing to a repository on my local disk. The magic of Dropbox, of course, is that the contents of this folder are syn- chronized with the Dropbox cloud service and are accessible wherev- er I can access Dropbox. (Even if you are using a machine without a Dropbox client, you can use a public link to access your repository over http.) This will walk you through the process[2] of initializing a git repository. Not only does this effectively back up your dotfiles, but you can track changes over time and restore to a previous state in the event of a misconfiguration. [1]: http://brandon.invergo.net/news/2012-05-26-using-gnu-stow-to-manage-your-dotfiles.html [2]: http://stackoverflow.com/questions/1960799/using-git-and-dropbox-together-effectively