Dot-drop is simple node.js utility that helps you sync your .config
files/directories across multiple Unix computers using Dropbox.
First, install drop-dot
via npm:
$ npm install -g drop-dot
Next, create a .drop-dot
folder in your ~/Dropbox
directory along with an empty configuration file:
$ mkdir ~/Dropbox/.drop-dot
$ touch ~/Dropbox/.drop-dot/.drop-dot
Then, populate this .drop-dot
file with a list of the files and/or directories that you wish to sync with Dropbox. For example, the contents of your .drop-dot
might look like the following:
~/.bashrc
~/.vimrc
~/.vim
~/.tmux.conf
Note: You are free to use the ~
symbol in this file to denote your home folder, but cannot (presently) use environment variables (i.e., $HOME
, etc).
After you populate your config file, you can use drop-dot to place its files into your ~/Dropbox/.drop-dot
folder:
$ drop-dot drop # on Computer #1
In case you are curious, this is equivalent to running -- for each /path/to/file_or_dir
written inside ~/Dropbox/.drop-dot/.drop-dot
-- the following two commands:
$ sudo mv /path/to/file_or_dir ~/Dropbox/.drop-dot/file_or_dir
$ sudo ln -s ~/Dropbox/.drop-dot/file_or_dir /path/to/file_or_dir
Finally, migrate to any other Unix computer synced to your Dropbox account, and run the following command:
$ drop-dot link
You're done.
What this last command does is the following: for each /path/to/file_or_dir
inside ~/Dropbox/.drop-dot
, drop-dot creates a symlink corresponding to this address that points to the appropriate corresponding file/directory inside your ~/Dropbox/.drop-dot
folder. This is equivalent to the following:
$ sudo ln -s ~/Dropbox/.drop-dot/file_or_dir /path/to/file_or_dir
Here is a graphical representation of how this program would go about syncing ~/file1
:
If you don't know what a "symlink" is, check out this.
- A Unix system (i.e., linux or mac)
- Dropbox
This program is designed to never eat, move, or link a file if any sort of system conflict exists (you'll just get an error message printed to your console); however, use this at your own risk (and always make backups :)
-
Add the ability to individually add and remove files (instead of relying on a config file): i.e.:
$ drop-dot drop ... $ drop-dot remove ...
-
Add
drop-dot status
:$ drop-dot status All of your files are synced!
‐ Improve readability of error messages
- Allow the usage of environment variables in configuration files
Dot-drop is written in ClojureScript and transpiled to pure nodejs.