Fondo
Me gustaría utilizar Borg Backup como solución de copia de seguridad (copia de seguridad en un servidor remoto). Borg ofrece un script sh muy conveniente que, según dicen, se puede ejecutar como un trabajo cron. Mientrasla secuencia de comandosFunciona perfectamente en la línea de comando, pero no funciona en cron.
Ejecuto Debian Bullseye.
¿Cómo puedo hacer que se ejecute en cron?
AquíEs una descripción similar del problema, sin embargo, mi repositorio está cifrado.
Datos
Crontab de raíz
* * * * * /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
Salida del archivo de registro
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
Notas
- Excluí borg compact del script porque este comando no funciona en Debian Bullseye
¡Me alegra mucho recibir ayuda para resolver este problema!