From cc6feac775f15a091800a36a131d90fcaa25713d Mon Sep 17 00:00:00 2001 From: Silvio Rhatto Date: Wed, 23 May 2018 12:44:36 -0300 Subject: Support for local backups --- README.md | 55 +++++++++++++++++++++++++++++++++++++++---------------- borger | 27 +++++++++++++++++++++------ 2 files changed, 60 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 55398d1..c358987 100644 --- a/README.md +++ b/README.md @@ -12,35 +12,58 @@ A script for home folder backups using [Borg](https://borgbackup.readthedocs.io) Create a config for your `servername` destination at `~/.config/borger/servername`: - # Backup destination - export SSH_SERVER="user@host" - export SSH_PORT="2202" + # Backup destination + export SSH_SERVER="user@host" + export SSH_PORT="2202" - # Repository path - export BORG_REPO_DIR="/var/backups/users/$USER/borg" - export BORG_REPO="ssh://$SSH_SERVER:$SSH_PORT/$BORG_REPO_DIR" + # Repository path + export BORG_REPO_DIR="/var/backups/users/$USER/borg" + export BORG_REPO="ssh://$SSH_SERVER:$SSH_PORT/$BORG_REPO_DIR" - # Setting one of those, so you won't be asked for your repository passphrase: - #export BORG_PASSPHRASE='HACKME' - #export BORG_PASSCOMMAND='pass show backup' - #export BORG_PASSCOMMAND='keyringer default decrypt borg 2> /dev/null' + # Setting one of those, so you won't be asked for your repository passphrase: + #export BORG_PASSPHRASE='HACKME' + #export BORG_PASSCOMMAND='pass show backup' + #export BORG_PASSCOMMAND='keyringer default decrypt borg 2> /dev/null' - # Backup config - keepdaily="7" - keepweekly="4" - keepmonth="6" - encryption="keyfile" - placeholder="{user}" + # Backup config + keepdaily="7" + keepweekly="4" + keepmonth="6" + encryption="keyfile" + placeholder="{user}" Then run borger: borger servername +If you want to backup to local folder or a locally-mounted USB disk, use the +following config at `~/.config/borger/my-disk`: + + # Repository path + export BORG_REPO="/media/my-disk/backups/users/$USER/borg" + + # Setting one of those, so you won't be asked for your repository passphrase: + #export BORG_PASSPHRASE='HACKME' + #export BORG_PASSCOMMAND='pass show backup' + #export BORG_PASSCOMMAND='keyringer default decrypt borg 2> /dev/null' + + # Backup config + keepdaily="7" + keepweekly="4" + keepmonth="6" + encryption="keyfile" + placeholder="{user}" + +Then run borger normally: + + borger my-disk + # Checking your backups As simply as borger servername --check + borger mydisk --check # WARNING diff --git a/borger b/borger index 2148986..0b1ac29 100755 --- a/borger +++ b/borger @@ -88,14 +88,29 @@ function borger_trap { # Initialize function borger_init { - if ! ssh $SSH_SERVER -p $SSH_PORT test -f $BORG_REPO_DIR/config; then - info "Initializing borg repository at $BORG_REPO..." - borg init --encryption=$encryption $BORG_REPO + if [ ! -z "$SSH_SERVER" ]; then + # Remote backup over SSH + if ! ssh $SSH_SERVER -p $SSH_PORT test -f $BORG_REPO_DIR/config; then + info "Initializing borg repository at $BORG_REPO..." + borg init --encryption=$encryption $BORG_REPO - init_exit=$? + init_exit=$? - if [ "$init_exit" != "0" ]; then - fatal "Error initializing repository" + if [ "$init_exit" != "0" ]; then + fatal "Error initializing repository" + fi + fi + else + # Local backup + if [ ! -f "$BORG_REPO/config" ]; then + info "Initializing borg repository at $BORG_REPO..." + borg init --encryption=$encryption $BORG_REPO + + init_exit=$? + + if [ "$init_exit" != "0" ]; then + fatal "Error initializing repository" + fi fi fi } -- cgit v1.2.3