# backup.sh ![](https://github.com/ceticamarco/backup.sh/actions/workflows/backup.sh.yml/badge.svg) `backup.sh` is a POSIX compliant, modular and lightweight backup utility to save and encrypt your files. This tool is intended to be used on small scale UNIX environments such as VPS, personal servers and workstations. `backup.sh` uses [rsync](https://linux.die.net/man/1/rsync), [tar](https://linux.die.net/man/1/tar), [gpg](https://linux.die.net/man/1/gpg) and [sha256sum](https://linux.die.net/man/1/sha256sum) to copy, compress, encrypt the backup and verify the backup. ## Installation `backup.sh` is a single source file, to install it you can copy the script wherever you want. Alternatively, if you are running a DEB/RPM distribution, you can install it with the following command: ```sh $> sudo apt install ./bin/backup.sh-1.0.0.x86_64.deb # Debian $> sudo dnf install ./bin/backup.sh-1.0.0-2.x86_64.rpm # RHEL ``` For any other UNIX system, you can use the following command: ```sh $> sudo make install ``` This will copy `backup.sh` into `/usr/local/bin/backup.sh`, `sources.bk` into `/usr/local/etc/sources.bk` and `backup.sh.1` into `/usr/share/man/man1/backup.sh.1`. To uninstall the program along with the sample _sources file_ and the manual page, you can issue `sudo make uninstall`. At this point you still need to install the following dependencies: - `Bash(v>=4)` - `rsync` - `tar` - `gpg` ## Usage To show the available options, you can run `backup.sh --help`, which will print out the following message: ```text backup.sh v1.0.0 - POSIX compliant, modular and lightweight backup utility. Syntax: ./backup.sh [-b|-e|-c|-V|-h] options: -b|--backup SOURCES DEST PASS Backup folders from SOURCES file. -e|--extract ARCHIVE PASS Extract ARCHIVE using PASS. -c|--checksum Generate/check SHA256 of a backup. -V|--verbose Enable verbose mode. -h|--help Show this helper. General help with the software: https://github.com/ceticamarco/backup.sh Report bugs to: Marco Cetica() ``` As you can see, `backup.sh` supports three options: **backup creation**, **backup extraction** and **checksum** to verify the integrity of a backup. The first option requires root permissions, while the second one does not. The checksum option must be used in combination of one of the previous options. ### Backup creation To specify the directories to back up, `backup.sh` uses an associative array defined in a text file(called _sources file_) with the following syntax: ```text