A lightweight archive management utility with YAML based configuration.
In a world where your files and data are increasingly stored and controlled by large companies, there are those who wish to take back control. However, with great power comes great responsibility, and it is important to practice good data stewardship. A good place to start is by keeping rolling backups, a process which Go Archive It aims to make as straightforward and painless as possible.
Full documentation available here
- I reccommend using cron to automate your archives
- If you are using the homebrew installation, that might look something like this:
# Run go-archive-it at 9am every day, output logs to ~/logs/go-archive-it.txt 0 9 * * * /usr/local/Cellar/go-archive-it/0.0.7/bin/go-archive-it >> ~/logs/go-archive-it.txt 2>&1
- If you built the project from source, I will assume you know what you are doing, but the only real change will be the path to the binary
- If you are using the homebrew installation, that might look something like this:
- The program looks for a config file at
~/.config/go-archive-it/config.yaml
- If the config does not exist, the program will create it with the following default contents:
vaultpath: - ~/example - ~/directories archivepath: ~/archive archivetype: 1 retention: 10
- Let's break this down
vaultpath
is a list of directories to be archived (add as many as you need, they will be archived asynchronously)archivepath
is the path to the directory where your archives will be storedarchivetype
can be set to0
for uncompressed.tar
archives or1
for.tar.gz
retention
is the number of archives you want to keep at any given time for each of the directories in vaultpath (it is stored as an 8 bit integer, so it must be less than 256)
- If the config does not exist, the program will create it with the following default contents:
-h, help
- Display the help message
-e, ext
- Runs the program based on a file at
~/.config/go-archive-it/ext.yaml
- Configuration is the same as running the program with the default path
- Intended for archiving onto an external drive with preconfigured options
- Runs the program based on a file at
-i, init [NAME]
- Initialize a named config file at
~/.config/go-archive-it/[NAME].yaml
- Initialize a named config file at
-p, path [NAME]
- Run the program withthe named config file at
~/.config/go-archive-it/[NAME].yaml
- Run the program withthe named config file at
Usage: go-archive-it [OPTION] ...
---------------------------------
-h, help Display this help message
-e, ext Use external config file (~/.config/go-archive-it/ext.yaml)
-i, init [NAME] Initialize named config file (~/.config/go-archive-it/[NAME].yaml)
-p, path [NAME] Use named config file (~/.config/go-archive-it/[NAME].yaml)
---------------------------------
Running with no arguments will use the default config file (~/.config/go-archive-it/config.yaml)
brew tap korbexmachina/tap
brew install go-archive-it
-
-e
as an alternative to theext
argument -
-p
argument for passing an arbitrary filename for configuration, to allow for as many user configurations as needed -
-h
argument for help -
init
/-i
argument for initializing config files with arbitrary names - Default config initialization option (templates)
- Archive the path beggining at the directory being archived rather than including the directories above it
The program does currently ignore their other contents, but the nesting is still mildly annoying when accessing the archives
- Fix symlink behaviour
The program currently stops when it encounters a symlink
- Distribute via nixpkgs
yaml.v3 - see notice.md
for details