YunoHost-Apps / borg_ynh

An experimental Borg implementation for YunoHost
https://www.borgbackup.org/
GNU Affero General Public License v3.0
19 stars 25 forks source link

borg backup stops applications when doing backup & failing to backup application #89

Closed arthurlutz closed 3 years ago

arthurlutz commented 3 years ago

First off, so happy to be testing and using borg via yunohost. It's a great piece of software and has saved my data from hardware failure a couple of times now. I really hope we can get some nice easy integration in yunohost.

On a yunohost with a single app, jellyfin, it seems that when the backup is run it stops the jellyfin application, fails to back it up and doesn't restart it.

root@host:~# BORG_RSH="ssh -i /root/.ssh/id_borg_ed25519 -oStrictHostKeyChecking=yes " borg extract user@server:repo::_auto_borg-2021-05-28_00:01 --list
Enter passphrase for key ssh://user@server/./repo: 
.
apps
apps/borg
apps/borg/backup
apps/borg/backup/usr
apps/borg/backup/usr/local
apps/borg/backup/usr/local/bin
apps/borg/backup/usr/local/bin/backup-with-borg
apps/borg/backup/etc
apps/borg/backup/etc/sudoers.d
apps/borg/backup/etc/sudoers.d/borg
apps/borg/backup/etc/systemd
apps/borg/backup/etc/systemd/system
apps/borg/backup/etc/systemd/system/borg.timer
apps/borg/backup/etc/systemd/system/borg.service
apps/borg/backup/etc/yunohost
apps/borg/backup/etc/yunohost/hooks.d
apps/borg/backup/etc/yunohost/hooks.d/backup_method
apps/borg/backup/etc/yunohost/hooks.d/backup_method/05-borg_app
apps/borg/backup/root
apps/borg/backup/root/.ssh
apps/borg/backup/root/.ssh/id_borg_ed25519
apps/borg/backup/root/.ssh/id_borg_ed25519.pub
apps/borg/settings
apps/borg/settings/settings.yml
apps/borg/settings/manifest.json
apps/borg/settings/permissions.yml
apps/borg/settings/scripts
apps/borg/settings/scripts/_common.sh
apps/borg/settings/scripts/install
apps/borg/settings/scripts/backup
apps/borg/settings/scripts/upgrade
apps/borg/settings/scripts/remove
apps/borg/settings/scripts/restore
apps/borg/settings/conf
apps/borg/settings/conf/systemd.timer
apps/borg/settings/conf/sudoer
apps/borg/settings/conf/backup-with-borg
apps/borg/settings/conf/backup_method
apps/borg/settings/conf/systemd.service
backup.csv
info.json

No jellyfin files seem to be there...

And the log of the backup itself goes :

root@etienne:~# yunohost log show 20210527-230143-backup_create
description: Create a backup archive
log_path: /var/log/yunohost/categories/operation/20210527-230143-backup_create.log
logs: 
  - 2021-05-28 00:01:49,311: DEBUG - + args_array=([s]=src_path= [d]=dest_path= [b]=is_big [m]=not_mandatory)
  - 2021-05-28 00:01:49,312: DEBUG - + local -A args_array
  - 2021-05-28 00:01:49,312: DEBUG - + local src_path
  - 2021-05-28 00:01:49,313: DEBUG - + local dest_path
  - 2021-05-28 00:01:49,314: DEBUG - + local is_big
  - 2021-05-28 00:01:49,314: DEBUG - + local not_mandatory
  - 2021-05-28 00:01:49,315: DEBUG - + ynh_handle_getopts_args --src_path=/etc/systemd/system/jellyfin.service
  - 2021-05-28 00:01:49,316: DEBUG - + set +o xtrace
  - 2021-05-28 00:01:49,417: DEBUG - + dest_path=
  - 2021-05-28 00:01:49,418: DEBUG - + is_big=0
  - 2021-05-28 00:01:49,419: DEBUG - + not_mandatory=0
  - 2021-05-28 00:01:49,421: DEBUG - + BACKUP_CORE_ONLY=0
  - 2021-05-28 00:01:49,421: DEBUG - + test -n jellyfin
  - 2021-05-28 00:01:49,422: DEBUG - ++ ynh_app_setting_get --app=jellyfin --key=do_not_backup_data
  - 2021-05-28 00:01:49,423: DEBUG - ++ local legacy_args=ak
  - 2021-05-28 00:01:49,424: DEBUG - ++ args_array=([a]=app= [k]=key=)
  - 2021-05-28 00:01:49,424: DEBUG - ++ local -A args_array
  - 2021-05-28 00:01:49,425: DEBUG - ++ local app
  - 2021-05-28 00:01:49,426: DEBUG - ++ local key
  - 2021-05-28 00:01:49,426: DEBUG - ++ ynh_handle_getopts_args --app=jellyfin --key=do_not_backup_data
  - 2021-05-28 00:01:49,427: DEBUG - ++ set +o xtrace
  - 2021-05-28 00:01:49,543: DEBUG - ++ [[ do_not_backup_data =~ (unprotected|protected|skipped)_ ]]
  - 2021-05-28 00:01:49,544: DEBUG - ++ ynh_app_setting get jellyfin do_not_backup_data
  - 2021-05-28 00:01:49,545: DEBUG - ++ set +o xtrace
  - 2021-05-28 00:01:49,833: DEBUG - + do_not_backup_data=
  - 2021-05-28 00:01:49,834: DEBUG - + '[' 0 -eq 1 ']'
  - 2021-05-28 00:01:49,835: DEBUG - + '[' '!' -e /etc/systemd/system/jellyfin.service ']'
  - 2021-05-28 00:01:49,836: DEBUG - + ynh_print_warn '--message=Source path '\''/etc/systemd/system/jellyfin.service'\'' does not exist'
  - 2021-05-28 00:01:49,836: DEBUG - + local legacy_args=m
  - 2021-05-28 00:01:49,837: DEBUG - + args_array=([m]=message=)
  - 2021-05-28 00:01:49,838: DEBUG - + local -A args_array
  - 2021-05-28 00:01:49,838: DEBUG - + local message
  - 2021-05-28 00:01:49,839: DEBUG - + ynh_handle_getopts_args '--message=Source path '\''/etc/systemd/system/jellyfin.service'\'' does not exist'
  - 2021-05-28 00:01:49,840: DEBUG - + set +o xtrace
  - 2021-05-28 00:01:49,859: DEBUG - + ynh_print_log 'Source path '\''/etc/systemd/system/jellyfin.service'\'' does not exist'
  - 2021-05-28 00:01:49,860: DEBUG - + echo -e 'Source path '\''/etc/systemd/system/jellyfin.service'\'' does not exist'
  - 2021-05-28 00:01:49,862: DEBUG - + '[' 0 == 0 ']'
  - 2021-05-28 00:01:49,868: WARNING - Source path '/etc/systemd/system/jellyfin.service' does not exist
  - 2021-05-28 00:01:49,870: DEBUG - + echo /etc/systemd/system/jellyfin.service
  - 2021-05-28 00:01:49,870: DEBUG - + grep --quiet /etc/fail2ban
  - 2021-05-28 00:01:49,871: DEBUG - + return 1
  - 2021-05-28 00:01:49,872: DEBUG - + ynh_exit_properly
  - 2021-05-28 00:01:49,872: DEBUG - + local exit_code=1
  - 2021-05-28 00:01:49,873: DEBUG - + rm -rf /var/cache/yunohost/download/
  - 2021-05-28 00:01:49,874: DEBUG - + '[' 1 -eq 0 ']'
  - 2021-05-28 00:01:49,875: DEBUG - + trap '' EXIT
  - 2021-05-28 00:01:49,876: DEBUG - + set +o errexit
  - 2021-05-28 00:01:49,876: DEBUG - + set +o nounset
  - 2021-05-28 00:01:49,877: DEBUG - + sleep 0.5
  - 2021-05-28 00:01:50,384: ERROR - Could not back up jellyfin
[snip]

Full https://paste.yunohost.org/raw/ritirijuxo

On thing I notice is that it's looking for the service file in the wrong place, it's actually in /lib/systemd/system/jellyfin.service

zamentur commented 3 years ago

This bug has been corrected on jellyfin_ynh https://github.com/YunoHost-Apps/jellyfin_ynh/commit/430685b8d1d28e299088c6da75fa36ebe093d090#diff-d7c669d8e7971ae1796dc06b149cbfaee4a56384abaeb3bd0a85077e7c3cb141