| Summary: | system-backup: Не предусмотрена ситуация, когда системные файлы меняются во время работы | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Artem Varaksa <varaksaaa> |
| Component: | system-backup | Assignee: | Leonid Krivoshein <klark> |
| Status: | CLOSED NOTABUG | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P5 | CC: | klark |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
Точно поведение tar не изучал, но даже если отдельные файлы записываются корректно, без полного снимка системы может возникнуть несоответствие между несколькими файлами. Данное поведение предопределено и документировано: https://www.altlinux.org/Rescue/Recovery#Пример_"универсального"_бэкапа_всей_системы Чтобы создать образы установленной системы, достаточно установить пакет system-backup и смонтировать носитель, на который эти образы будут сохранены. Но лучше всё же сохранять не текущую систему, поскольку в момент бэкапа её состояние может изменяться. Надёжнее всего загрузиться с носителя ALT Rescue и, используя данный скрипт, сделать бэкап своей системы. Сники томов или файловых систем, безусловно, могут быть сделаны отдельно внешним инструментарием. Но делать это в самом system-backup не предполагалось. Если бэкапится текущий корень, с которого загрузились, то обычно это какой-то минимальный сервер, где на время создания бэкапа все службы остановлены. |
Шаги ==== 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