Hintergrund

Hintergrund

Hintergrund

Ich möchte Borg Backup als Backup-Lösung verwenden (Backup auf Remote-Server). Borg bietet ein sehr praktisches sh-Skript an, das man angeblich einfach als Cron-Job ausführen kann. WährendDas Skriptfunktioniert einwandfrei in der Befehlszeile, aber nicht in Cron.

Ich verwende Debian Bullseye.

Wie kann ich es auf Cron ausführen?

Hiereine ähnliche Problembeschreibung, allerdings ist mein Repository verschlüsselt.

Daten

Roots Crontab

* * * * * /usr/local/bin/scriptborg.sh >> /home/t/dwnlds/log.txt 2>&1

scriptborg.sh

#!/bin/sh

# Setting this, so the repo does not need to be given on the commandline:
export BORG_REPO=ssh://[email protected]:2222/nas/mydirectory/backup/main

# See the section "Passphrase notes" for more infos.
export BORG_PASSPHRASE='mypassword'

# some helpers and error handling:
info() { printf "\n%s %s\n\n" "$( date )" "$*" >&2; }
trap 'echo $( date ) Backup interrupted >&2; exit 2' INT TERM

info "Starting backup"

# Backup the most important directories into an archive named after
# the machine this script is currently running on:

borg create                         \
    --verbose                       \
    --filter AME                    \
    --list                          \
    --stats                         \
    --show-rc                       \
    --compression lz4               \
    --exclude-caches                \
    --exclude '/home/*/.cache/*'    \
    --exclude '/var/tmp/*'          \
    --exclude '/home/user/vids/*'         \
    --exclude '/home/user/dwnlds/*'       \
    --exclude '/home/user/.local/share/Trash/*' \
                                    \
    ::'{hostname}-{now}'            \
    /etc                            \
    /home                           \
    /root                           \
    /var                            \

backup_exit=$?

info "Pruning repository"

# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
# archives of THIS machine. The '{hostname}-' prefix is very important to
# limit prune's operation to this machine's archives and not apply to
# other machines' archives also:

borg prune                          \
    --list                          \
    --prefix '{hostname}-'          \
    --show-rc                       \
    --keep-within  1d               \
    --keep-daily    7               \
    --keep-weekly   4               \
    --keep-monthly  6               \

prune_exit=$?

# actually free repo disk space by compacting segments

# info "Compacting repository"

# borg compact

# compact_exit=$?

# use highest exit code as global exit code
global_exit=$(( backup_exit > prune_exit ? backup_exit : prune_exit ))
global_exit=$(( compact_exit > global_exit ? compact_exit : global_exit ))

if [ ${global_exit} -eq 0 ]; then
    info "Backup, Prune, and Compact finished successfully"
elif [ ${global_exit} -eq 1 ]; then
    info "Backup, Prune, and/or Compact finished with warnings"
else
    info "Backup, Prune, and/or Compact finished with errors"
fi

exit ${global_exit}

„ls -l ~/scriptborg.sh“

-rwx------ 1 root root 2562 4. Jun 19:35 scriptborg.sh

Ausgabe aus der Protokolldatei

So 05 Jun 2022 12:20:01 CEST Starting backup

Remote: ssh: connect to host 192.168.1.101 port 2222: Connection timed out
Connection closed by remote host. Is borg working on the server?
terminating with error status, rc 2

So 05 Jun 2022 12:22:11 CEST Pruning repository

Remote: ssh: connect to host 192.168.1.101 port 2222: Connection timed out
Connection closed by remote host. Is borg working on the server?
terminating with error status, rc 2

So 05 Jun 2022 12:24:22 CEST Backup, Prune, and/or Compact finished with errors

Anmerkungen

  • Ich habe Borg Compact aus dem Skript ausgeschlossen, da dieser Befehl unter Debian Bullseye nicht funktioniert.

Ich bin sehr froh, Hilfe bei der Lösung dieses Problems zu bekommen!

verwandte Informationen