borg backup scripts used on KrautSpace infra
borg-backup@.service | ||
borg-backup@.timer | ||
borg-prune@.service | ||
borg-prune@.timer | ||
exec_borg.sh | ||
init.sh | ||
install.sh | ||
install_as_link.sh | ||
LICENSE | ||
README.md |
borg-backup-scripts
borg backup scripte used on KrautSpace infra
Requirements
sudo apt install borg
Usage
Initialization
sudo ./init.sh remote_site_1 --host=whatever.your-storagebox.de --port=23 --login=whatever --directory=/home/borg
What this does:
- Creates a config directory at
/etc/borg/remote_site_1
. - Creates a passphrase for borg.
- Creates a ssh keypair for the ssh connection to your remote ssh backup destination host.
- Deploys the ssk public key to the remote ssh account using
ssh-copy-id
. - Checks if the destination path is usable.
- Initializes the borg repository.
- Prints out the borg repository status if initialization was successfull.
- Attempts to continue the init process if called multiple times.
Service installation
# on productive system: copy systemd-units in /etc/systemd/system
sudo ./install.sh
# on development system: link systemd-units from current directory
sudo ./install_as_link.sh
Service activation
sudo systemctl enable borg-backup@remote_site_1.timer
sudo systemctl enable borg-prune@remote_site_1.timer
FAQ
Why so much sudo
?
Good question!
The borg backup process requires priviledges to read everything you want to backup.
The systemd-units sandbox the borg process to a read-only view of the filesystem.
Can I trust this code?
Never trust anything from the internet.
Download and verify what it does. It should be somewhat readable.
How can I restore lost files?
You can manually connect to your borg repository. You'll need
- location of your SSH key (
SSH_KEY
) - SSH user name (
SSH_USER
) - SSH host (
SSH_HOST
) - directory where the borg repo lives (
BORG_REPO
) - name of the borg repo (
BORG_NAME
) ` Use the following command to export a tar archive:
BORG_RSH="ssh -i SSH_KEY" borg export-tar ssh://SSH_USER@SSH_HOST/BORG_REPO::BORG_NAME TAR_NAME DIR_NAME
Borg will create a tar file with the name TAR_NAME
and outputs all contents from the directory DIR_NAME
into it.