drop-dot

CLI utility to sync config files, dot files, and directories across UNIX machines using Dropbox.

Usage no npm install needed!

<script type="module">
  import dropDot from 'https://cdn.skypack.dev/drop-dot';
</script>

README

Drop-dot

drop logo

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

Graphical Representation

Here is a graphical representation of how this program would go about syncing ~/file1:

Alt Text

If you don't know what a "symlink" is, check out this.

Requirements

  • A Unix system (i.e., linux or mac)
  • Dropbox

Is this program safe?

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 :)

TODO

  • 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

Notes

Dot-drop is written in ClojureScript and transpiled to pure nodejs.