update-grub2 создает grub.cfg.new вместо grub.cfg

Проблема связана с этими двумя строками:

mv dump $BACKUP_NAME* $BACKUPS_DIR
tar -cvz -f $BACKUP_NAME.tar.gz $BACKUP_NAME

Обратите внимание, что вы перемещаете dumpи $BACKUP_NAME*из текущего каталога с mvв первой строке, а затем пытаетесь добавить $BACKUP_NAME*из текущего каталога в архив во второй.

Я чувствую, что вместо этого вы могли бы использовать

mv dump "$BACKUP_NAME"* "$BACKUPS_DIR"
tar -cvz -f "$BACKUP_NAME.tar.gz" "$BACKUPS_DIR"

Это создает архив tarкаталога $BACKUPS_DIR. Однако я не уверен, почему у вас $BACKUP_NAME*в первой строке, поскольку я не вижу ничего, создающего файлы с таким именем... (но я мог что-то упустить ).

Кроме того, рассмотрите возможность цитирования расширений переменных, как я сделал выше, по всему сценарию. Это особенно важно, если вы используете имена файлов или каталогов, содержащие пробелы.

1
30.11.2019, 15:10
2 ответа

Я запустил grub-mkconfig -o /boot/grub/grub.cfgс помощью Ansible, он создал такое же расширение.new.

Но когда я использовал grub-mkconfig > /boot/grub/grub.cfg, он успешно запустился и создал grub.cfg.

-oможет не совпадать с >.

Глядя на исходный код после комментария @oldfred, обнаружил, что расширение .newсоздается при наличии ошибки в файлах /etc/default/grubили /etc/grub.d/*. См. здесь:

if test "x${grub_cfg}" != "x" ; then
  if ! ${grub_script_check} ${grub_cfg}.new; then
    # TRANSLATORS: %s is replaced by filename
    gettext_printf "Syntax errors are detected in generated GRUB config file.
Ensure that there are no errors in /etc/default/grub
and /etc/grub.d/* files or please file a bug report with
%s file attached." "${grub_cfg}.new" >&2
    echo >&2
    exit 1
  else
    # none of the children aborted with error, install the new grub.cfg
    mv -f ${grub_cfg}.new ${grub_cfg}
  fi
fi
0
27.01.2020, 23:29

Вместо этого вы можете использовать grub-mkconfig -o /boot/grub2/grub.cfg.

2
27.01.2020, 23:29

Теги

Похожие вопросы