Helpers v2.1 : BACKUP_CORE_ONLY : variable sans liaison

What type of hardware are you using: Raspberry Pi 3, 4+
What YunoHost version are you running: 12.0.9.1
How are you able to access your server: SSH
Are you in a special context or did you perform specific tweaking on your YunoHost instance ?: No

Describe your issue

Hello,
I updated simultaneously Nextcloud from 29.x to 30.0.4 and Yunohost from 12.0.something (don’t remember exactly) to 12.0.9.1 a few days ago, so I don’t exactly from where the issue is coming, but now everytime I try to backup Nextcloud, Yunohost throws an error :

/usr/share/yunohost/helpers.v2.1.d/backup: ligne 59: BACKUP_CORE_ONLY : variable sans liaison

When I read the log, it seems that it assumes do_not_backup_data is set to ‘1’, but it is not explicitely set as a setting of the app: Is this expected behavior?

Share relevant logs or error messages

Full backup log:

args:
  apps:
  - nextcloud
  description: null
  dry_run: false
  methods: null
  name: null
  output_directory: null
  system: null
ended_at: 2024-12-26 18:48:58.912134
error: "Il n'y a rien \xE0 sauvegarder"
interface: api
operation: backup_create
parent: null
related_to:
- - app
  - nextcloud
started_at: 2024-12-26 18:48:57.376828
success: false
yunohost_version: 12.0.9.1

============

2024-12-26 19:48:57,497: INFO - Collecte des fichiers devant être sauvegardés pour nextcloud…
2024-12-26 19:48:57,710: DEBUG - Executing command '['sh', '-c', '/bin/bash -x "/var/cache/yunohost/app_tmp_work_dirs/app_m9fd4cxf/scripts/backup"  7>&1']'
2024-12-26 19:48:57,724: DEBUG - + source ../settings/scripts/_common.sh
2024-12-26 19:48:57,725: DEBUG - + source /usr/share/yunohost/helpers
2024-12-26 19:48:57,729: DEBUG - ++++ dirname -- /usr/share/yunohost/helpers
2024-12-26 19:48:57,733: DEBUG - +++ cd -- /usr/share/yunohost
2024-12-26 19:48:57,734: DEBUG - +++ pwd
2024-12-26 19:48:57,734: DEBUG - ++ SCRIPT_DIR=/usr/share/yunohost
2024-12-26 19:48:57,735: DEBUG - ++ YNH_HELPERS_VERSION=2.1
2024-12-26 19:48:57,744: DEBUG - ++ readonly 'XTRACE_ENABLE=set -o xtrace'
2024-12-26 19:48:57,745: DEBUG - ++ XTRACE_ENABLE='set -o xtrace'
2024-12-26 19:48:57,837: DEBUG - + ynh_print_info 'Declaring files to be backed up...'
2024-12-26 19:48:57,838: INFO - Declaring files to be backed up...
2024-12-26 19:48:57,845: DEBUG - + ynh_backup /var/www/nextcloud
2024-12-26 19:48:57,846: DEBUG - + local target=/var/www/nextcloud
2024-12-26 19:48:57,846: DEBUG - + local is_data=false
2024-12-26 19:48:57,846: DEBUG - + [[ -n nextcloud ]]
2024-12-26 19:48:57,847: DEBUG - + [[ /var/www/nextcloud =~ ^/var/log/nextcloud/?\*?$ ]]
2024-12-26 19:48:57,847: DEBUG - + [[ -n /home/yunohost.app/nextcloud ]]
2024-12-26 19:48:57,847: DEBUG - + [[ /var/www/nextcloud =~ ^/home/yunohost.app/nextcloud ]]
2024-12-26 19:48:57,848: DEBUG - + [[ -n nextcloud ]]
2024-12-26 19:48:57,848: DEBUG - ++ ynh_app_setting_get --key=do_not_backup_data
2024-12-26 19:48:58,050: DEBUG - + local do_not_backup_data=1
2024-12-26 19:48:58,050: DEBUG - + [[ false == true ]]
2024-12-26 19:48:58,050: DEBUG - + '[' '!' -e /var/www/nextcloud ']'
2024-12-26 19:48:58,051: DEBUG - ++ realpath /var/www/nextcloud
2024-12-26 19:48:58,054: DEBUG - + src_path=/var/www/nextcloud
2024-12-26 19:48:58,054: DEBUG - + dest_path=var/www/nextcloud
2024-12-26 19:48:58,054: DEBUG - + [[ -e var/www/nextcloud ]]
2024-12-26 19:48:58,055: DEBUG - + local rel_dir=/apps/nextcloud/backup
2024-12-26 19:48:58,055: DEBUG - + rel_dir=/apps/nextcloud/backup/
2024-12-26 19:48:58,055: DEBUG - + dest_path=/apps/nextcloud/backup/var/www/nextcloud
2024-12-26 19:48:58,055: DEBUG - + dest_path=apps/nextcloud/backup/var/www/nextcloud
2024-12-26 19:48:58,056: DEBUG - ++ echo /var/www/nextcloud
2024-12-26 19:48:58,057: DEBUG - ++ sed --regexp-extended 's/"/\"\"/g'
2024-12-26 19:48:58,061: DEBUG - + local src=/var/www/nextcloud
2024-12-26 19:48:58,063: DEBUG - ++ echo apps/nextcloud/backup/var/www/nextcloud
2024-12-26 19:48:58,064: DEBUG - ++ sed --regexp-extended 's/"/\"\"/g'
2024-12-26 19:48:58,069: DEBUG - + local dest=apps/nextcloud/backup/var/www/nextcloud
2024-12-26 19:48:58,071: DEBUG - ++ dirname /home/yunohost.backup/tmp/20241226-184857/apps/nextcloud/backup/var/www/nextcloud
2024-12-26 19:48:58,074: DEBUG - + mkdir --parents /home/yunohost.backup/tmp/20241226-184857/apps/nextcloud/backup/var/www
2024-12-26 19:48:58,078: DEBUG - + ynh_backup /home/yunohost.app/nextcloud
2024-12-26 19:48:58,078: DEBUG - + local target=/home/yunohost.app/nextcloud
2024-12-26 19:48:58,079: DEBUG - + local is_data=false
2024-12-26 19:48:58,079: DEBUG - + [[ -n nextcloud ]]
2024-12-26 19:48:58,079: DEBUG - + [[ /home/yunohost.app/nextcloud =~ ^/var/log/nextcloud/?\*?$ ]]
2024-12-26 19:48:58,081: DEBUG - + [[ -n /home/yunohost.app/nextcloud ]]
2024-12-26 19:48:58,082: DEBUG - + [[ /home/yunohost.app/nextcloud =~ ^/home/yunohost.app/nextcloud ]]
2024-12-26 19:48:58,083: DEBUG - + is_data=true
2024-12-26 19:48:58,083: DEBUG - + [[ -n nextcloud ]]
2024-12-26 19:48:58,084: DEBUG - ++ ynh_app_setting_get --key=do_not_backup_data
2024-12-26 19:48:58,290: DEBUG - + local do_not_backup_data=1
2024-12-26 19:48:58,290: DEBUG - + [[ true == true ]]
2024-12-26 19:48:58,291: DEBUG - + [[ 1 -eq 1 ]]
2024-12-26 19:48:58,292: WARNING - /usr/share/yunohost/helpers.v2.1.d/backup: ligne 59: BACKUP_CORE_ONLY : variable sans liaison
2024-12-26 19:48:58,297: DEBUG - ++ ynh_exit_properly
2024-12-26 19:48:58,298: DEBUG - ++ [[ backup =~ ^install$|^upgrade$|^restore$ ]]
2024-12-26 19:48:58,795: DEBUG - ++ exit 1
2024-12-26 19:48:58,897: DEBUG - Échec de l'exécution du script : /var/cache/yunohost/app_tmp_work_dirs/app_m9fd4cxf/scripts/backup
2024-12-26 19:48:58,902: ERROR - Impossible de sauvegarder nextcloud

OK, so the issue happens when do_no_backup is set and we are trying to backup the data_dir: in that case, BACKUP_CORE_ONLY variable is not initialized on line 58 of /usr/share/yunohost/helpers.v2.1.d/backup by parameter substitution as the first member of the “if” is true and the substitution that lies after the || is never run:

    if [[ "$is_data" == true ]] && ([[ ${do_not_backup_data:-0} -eq 1 ]] || [[ ${BACKUP_CORE_ONLY:-0} -eq 1 ]]); then

If anyone encounters the same issue, you may temporarily workaround it, awaiting for a Yunohost fix, by changing the line 59 in /usr/share/yunohost/helpers.v2.1.d/backup from
if [ BACKUP_CORE_ONLY -eq 1 ]; then
to
if [ ${BACKUP_CORE_ONLY:-0} -eq 1 ]; then

4 Likes

Hello,

Thanks for the workaround !
Did you, or someone else, take it to action and propose a PR ?

I opened an issue but I did not make a pr