Bug 54850

Summary: system-backup: Не предусмотрена ситуация, когда системные файлы меняются во время работы
Product: Sisyphus Reporter: Artem Varaksa <varaksaaa>
Component: system-backupAssignee: Leonid Krivoshein <klark>
Status: CLOSED NOTABUG QA Contact: qa-sisyphus
Severity: normal    
Priority: P5 CC: klark
Version: unstable   
Hardware: x86_64   
OS: Linux   

Description Artem Varaksa 2025-06-19 13:22:49 MSK
Шаги
====

1. # apt-get install -y system-backup

2. (Необязательно, но искусственно увеличивает шансы воспроизвести ошибку:)
   Запустить и оставить работать в фоне:
      # while true; do echo 'test' | systemd-cat; sleep 0.1; done

3. В отдельном терминале/сессии ssh запустить:
      # export BACKUP_DIR="/home/test/backup_test" && \
      [[ "$BACKUP_DIR" != "" ]] && rm -rfv $BACKUP_DIR/** && \
      system-backup -b "$BACKUP_DIR" -C


Фактический результат
=====================

Если при создании архива какой-либо файл изменится, возникает предупреждение от tar:

> Сохраняется / (корень)...
> tar: ./var/log/journal/75d0514271ab41bdbcfbc7dde34191d6/system.journal: файл изменился во время чтения
> 2,23GiB 0:01:23 [27,3MiB/s]


Ожидаемый результат
===================

Сохранение исходного файла на момент запуска system-backup.


Дополнительно
=============

В проверенном случае после извлечения из резервной копии журнал остался читаемым (с помощью команды вида `journalctl --file /путь/к/system.journal`).

Однако в общем случае корректная копия не гарантируется, файлы могут быть разные, от обычных до работающих БД и пр.

Возможно, можно решить проблему путём создания виртуального снимка файловой системы перед резервным копированием. Это использует, например, fstransform, преобразующий файловую систему "на месте": https://packages.altlinux.org/ru/sisyphus/srpms/fstransform/


Воспроизводимость
=================

Воспроизводится на виртуальных машинах:

[sisyphus] ALT Server 11.0 x86_64
system-backup-0.1.4-alt1.noarch

[p11] ALT Server 11.0 x86_64
system-backup-0.1.4-alt1.noarch

[p10] ALT Server 10.4 x86_64
system-backup-0.1.1-alt3.noarch
Comment 1 Artem Varaksa 2025-06-19 13:24:17 MSK
Точно поведение tar не изучал, но даже если отдельные файлы записываются корректно, без полного снимка системы может возникнуть несоответствие между несколькими файлами.
Comment 2 Leonid Krivoshein 2025-06-21 00:19:03 MSK
Данное поведение предопределено и документировано:

https://www.altlinux.org/Rescue/Recovery#Пример_"универсального"_бэкапа_всей_системы

Чтобы создать образы установленной системы, достаточно установить пакет system-backup и смонтировать носитель, на который эти образы будут сохранены. Но лучше всё же сохранять не текущую систему, поскольку в момент бэкапа её состояние может изменяться. Надёжнее всего загрузиться с носителя ALT Rescue и, используя данный скрипт, сделать бэкап своей системы.

Сники томов или файловых систем, безусловно, могут быть сделаны отдельно внешним инструментарием. Но делать это в самом system-backup не предполагалось. Если бэкапится текущий корень, с которого загрузились, то обычно это какой-то минимальный сервер, где на время создания бэкапа все службы остановлены.