YAML config based backup utility. Easy to use yet flexible. With a primary focus on dotfile backup & setup, but not limited to dotfiles.
Project description
dotbackup
YAML config based backup utility. Easy to use yet flexible. With a primary focus on dotfile backup & setup, but not limited to dotfiles.
Features
- Simple configuration.
- Custom hooks.
Installation
You can download the script and place it to somewhere you like:
curl -L -o ~/.local/bin/dotbackup \
"https://github.com/jaxvanyang/dotbackup/raw/main/src/dotbackup.py"
chmod +x ~/.local/bin/dotbackup
Or you can install from one of these package managers:
Configuration
The default configuration file path is ~/.config/dotbackup/dotbackup.yml
, however you
can use the -c
option to specify another configuration file. Configuration files use
YAML syntax. If you are new to YAML and want to learn more, see Learn yaml in Y Minutes.
If you want a quick start, you can take this as an example.
Following are the configuration keyword definitions, undefined keywords are ignored
(maybe I'll write a validator someday).
backup_dir
Required. The directory where backup files be stored.
Example:
backup_dir: ~/dotfiles
clean
Optional. Whether to do clean backup/setup, i.e., delete target files before backup or
setup. The default is false
. This may be overridden by the command line option
--clean
.
Example:
clean: true
ignore
Optional. The global ignored file patterns. Files that matches these patterns will be
ignored in backup and setup. But files which are directly specified in apps.<app>.files
will not be ignored.
Example:
apps:
nvim:
files: [~/.config/nvim]
ignore: ['.git']
apps.<app>.files
Optional. The files to be backed up of the application <app>
, <app>
can be any
string. File paths MUST be under the $HOME
directory due to implementation. You can
use custom hooks to back up other
files.
Example:
apps:
nvim:
files:
- ~/.config/nvim/init.lua
- ~/.config/nvim/lua
apps.<app>.ignore
Optional. The Application ignored file patterns. Files that matches these patterns will
be ignored in backup and setup. But files which are directly specified in apps.<app>.files
will not be ignored.
Example:
apps:
nvim:
files: [~/.config/nvim]
ignore: ['*.json']
apps.<app>.<pre_backup|post_backup|pre_setup|post_setup>
Optional. The hooks to be executed before/after <app>
backup/setup, <app>
can be any
string. Each hook accept a list of commands, command are passed to sh -c
. You can use
these hooks to do advance operation.
Example:
FIXME: defining
BACKUP_DIR
is not implemented yet.
apps:
dotbackup:
pre_backup:
- cp /etc/dotbackup/dotbackup.yml "$BACKUP_DIR/dotbackup/dotbackup.yml"
post_backup:
- cd "$BACKUP_DIR" && git add dotbackup
pre_setup:
- pip install --user dotbackup || true
post_setup:
- sudo cp "$BACKUP_DIR/dotbackup/dotbackup.yml" /etc/dotbackup/dotbackup.yml
<pre_backup|post_backup|pre_setup|post_setup>
Optional. The hooks to be executed before/after all backup/setup. Each hook accept a
list of commands, command are passed to sh -c
. You can use these hooks to do advance
operation.
Example:
FIXME: defining
BACKUP_DIR
is not implemented yet.
pre_backup:
- date > "$BACKUP_DIR/backup_date.txt"
post_backup:
- |
cd "$BACKUP_DIR"
git add backup_date.txt
git commit -m "update backups"
git push
pre_setup:
- cd "$BACKUP_DIR" && git pull
post_setup:
- paru -Syu base-devel
Usage
Some examples:
dotbackup nvim tmux
dotbackup backup nvim tmux
dotbackup setup nvim tmux
dotbackup setup
Run dotbackup -h
for more information.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for dotbackup-0.0.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 15bd7c8706cafb0e28d4b635b933fd2c82da89f9eb0c61352c9b0c2ff4a435d0 |
|
MD5 | fcdc0e49ebeb19ee1e5a051075a86086 |
|
BLAKE2b-256 | c15b905300544a2e8b047e8a62da9722b7f4e433dba782122e4eba5166d4b841 |