A pure bash configuration backup tool. Keep your configuration files the same across all machines!
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Graham Helton 1e89fbcba5 Removed unused code 2 years ago
README.md Updated README 2 years ago
autodeploy.sh Removed unused code 2 years ago



AutoDeploy is a tool written in 100% bash that allows for extensible synchronization of configuration files, auto installation of programs your commonly use, and allows for git-like pull/commit. This is intended to be extensible to allow for you to quickly push out a set of configuration files, and have them be pulled into any other machine.

Autodeploy Running


I work on so many different machines that keeping my configuration files and the versions of the software I use in sync between many machines is a painstaking task. Autodeploy should help with the following:

  • Easily moving all configuraiton files (~/.vimrc,~/.config/i3/config,~/.xprofile,etc) between multiple machines
  • 100% bash
  • Trufflehog-like functionality for configuration files being stored in public places (IE: Github) (Coming soon!)


  • Pulling down of files from remote repository
  • Pushing of files to a remote repository
  • Staging of files defined in global_dotFiles.conf into ~/.config/autodeploy/$(hostname)_config/
  • Distributing config files in $(hostname)_config/ to their correct locations
  • Backing up of local configuration files to ~/.config/autodeploy/$(hostname)_config/backup/ before overwriting them
  • Installing of any application defined in global_applications
  • Editing configuration files in .config/autodeploy through the autodeploy tool


All configuration files are stored in ~/.config/autodeploy/

autodeploy_apps.conf -> The names of applications you wish to install via apt


autodeploy_config.conf -> Defines variables such as your remote repository, your config folder name, etc. You shouldn't have to edit this unless chaning repos.


autodeploy_files.conf -> Configuration files you would like to carry over to different systems.

It is important that you define files by their relative location to your home directory. For example, if I wanted to add a file to this, I would run autodeploy -e files and add a new file with it's path relative to $HOME such as: .config/graham/myfolder/myfile.conf and NOT /home/graham/.config/graham/myfolder/myfile.conf.


Command line arguments

Autodeploy is fairly simple to use once you understand the switches. Here is a quick run down of what everything does.

autodeploy -a: Installs applications defined in the autodeploy_apps.conf file. Currently this only supports apt.

autodeploy -b: Backs the files on your system that will get overwritten by issuing the -m command.

autodeploy -c: Collects configuration files defined in autodeploy_files.conf from around the system and places them in a folder named <your_computer_name>_config.

autodeploy -D: Deletes the configuration files associated with autodeploy (~/.config/autodeploy/).

autodeploy -e <apps|config|files>: Allows you to edit the configuration files from autodeploy. This is functionally the same as running vim ~/.config/autodeploy/autodeploy_files.conf

autodeploy -g: Gets files from the remote repository. This is functionally the same as running git pull.

autodeploy -h: Show the help screen.

autodeploy -l: Lists the available configuration files for different systems.

autodeploy -m: Moves the files defined in autodeploy_files.conf to their correct places in the file system.

autodeploy -p: Push files to remote directory. This takes files in the "staging directory" and pushes them to the remote repository. This is functionally the same as running git push

autodeploy -u: Moves the files from a different computer's configuration file to the local machine. You can see which configuration files you can choose from by running autodeploy -l

Initial setup

Autodeploy relies on having a git repository to store your configuration files. To get started, simply create an empty git repository and autodeploy will ask you where it is the first time you run it.

Note: Please do not store any kind of secrets in a github repository

Autodeploy setup