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!