Шаги ==== 1. # apt-get install -y system-backup 2. # bash -x system-backup -b "/home/test/backup_test" -C -v Фактический результат ===================== > ... > + '[' 0 -eq 0 -a -r /sys/devices/pci0000:00/0000:00:05.0/0000:01:01.0/virtio4/host2/target2:0:0/2:0:0:0/block/sda/sda3/removable ']' > ... Но такого файла не существует. Например: # export DEV_NAME="sda" PARTITION="3" && \ MAJOR=$(udevadm info "/dev/$DEV_NAME" | grep MAJOR | sed -r 's|.*=||') && \ MINOR=$(udevadm info "/dev/$DEV_NAME" | grep MINOR | sed -r 's|.*=||') && \ SYSPATH=$(readlink -fv "/sys/dev/block/${MAJOR}:${MINOR}/") && \ echo "SYSPATH=$SYSPATH" && \ cat "${SYSPATH}/${DEV_NAME}${PARTITION}/removable" > SYSPATH=/sys/devices/pci0000:00/0000:00:05.0/0000:01:02.0/virtio5/host9/target9:0:0/9:0:0:1/block/sda > cat: '/sys/devices/pci0000:00/0000:00:05.0/0000:01:02.0/virtio5/host9/target9:0:0/9:0:0:1/block/sda/sda3/removable': Нет такого файла или каталога Вместо этого есть файл без `/sda3`: # cat /sys/devices/pci0000:00/0000:00:05.0/0000:01:02.0/virtio5/host9/target9:0:0/9:0:0:1/block/sda/removable > 0 Проверял и с флешкой, у которой выводит 1. Ввиду этой ошибки никакие устройства не считаются removable, таким образом опция --removable не требуется даже для флешек и т. п. Ожидаемый результат =================== Корректная проверка, является ли устройство removable, без указания раздела в пути. Воспроизводимость ================= Воспроизводится на виртуальных машинах: [sisyphus] [p11+384293] system-backup-0.1.4-alt1 ALT Server 11.0 beta20250213 x86_64 [p11] system-backup-0.1.1-alt3 ALT Server 11.0 beta20250213 x86_64
То, что я здесь вижу, пока кажется вполне логичным. Логика с removable рассчитана на сканирование дисков, а не разделов. Съёмные диски по умолчанию должны исключаться, если не добавлен флаг --removable. Команда lsblk без параметров покажет все диски и разделы, а так же флаг RM. Вот эти диски system-backup должна пропускать вместе с разделами на них, так что нужно увидеть вывод lsblk.
(In reply to Artem Varaksa from comment #0) > 2. # bash -x system-backup -b "/home/test/backup_test" -C -v Кроме того, опция -C (--current, --self) предписывает не сканировать диски, а рассматривать текущую rootfs, с которой мы загрузились, как ту, на которой надо искать /etc/fstab. В этом случае флаг --removable действительно не должен никак влиять. Мне кажется, это не ошибка.
В данном случае привёл пример с не-removable носителем (встроенным диском). Даже для него логика неправильная, так как пытается смотреть .../sda/sda3/removable вместо .../sda/removable. Для такого диска # lsblk, ожидаемо, выводит в столбце RM 0: # lsblk > NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS > sda 8:0 0 25G 0 disk > ├─sda1 8:1 0 511M 0 part /boot/efi > ├─sda2 8:2 0 742M 0 part [SWAP] > └─sda3 8:3 0 23,8G 0 part / > sdb 8:16 0 50G 0 disk > └─sdb1 8:17 0 50G 0 part С флешкой # lsblk выводит в столбце RM 1. Но у неё так же нет файла вида .../sdс/sdс3/removable, есть только .../sdс/removable, в связи с чем сделал вывод, что и с флешкой removable будет некорректно определяться. Сразу не проверил поведение именно при запуске system-backup с флешкой, на которой есть установленная система, проверю и опишу его.
Когада мы запускаем system-backup без свободных аргументов и без параметра -C (--current, --self), мы как бы говорим "сохрани систему, которую найдёшь". В этом случае работает сканирование всех дисков и только в этом случае параметр --removable имеет смысл, так как при сканировании по умолчанию съёмные носители исключаются. Когда же мы указываем system-backup явно на то, что мы хотим сохранить, она не должна ничего исключать, в этом случае параметр --removable не имеет смысла.
Спасибо за уточнение. Проверил такой случай, когда кроме запущенной с флешки системы других систем нет, в нём вне зависимости от параметра -r авто-поиск системы (без указания -C и -U) не работает. Завёл отдельную ошибку об этом: https://bugzilla.altlinux.org/54517. В данной ошибке всё же хочу обратить внимание, что даже при такой проверке обращения происходят к `.../sda/sda1/removable`, а не `.../sda/removable`, что видно при запуске с `bash -x` команд из упомянутой ошибки. Если этот момент следует считать ожидаемым поведением, просьба закрыть данную ошибку. > ... > ++ readlink -fv /sys/dev/block/8:1 > + sysfs=/sys/devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1 > + '[' '!' -r /sys/devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1/dev ']' > + read b > + '[' 8:1 '!=' 8:1 ']' > + '[' -r /sys/devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1/ro ']' > + read b > + '[' 0 '!=' 0 ']' > + '[' 0 -eq 0 ']' > + '[' -r /sys/devices/pci0000:00/0000:00:14.0/usb2/2-4/2-4:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1/removable ']' > ...
(In reply to Artem Varaksa from comment #5) > Проверил такой случай, когда кроме запущенной с флешки системы других систем > нет, в нём вне зависимости от параметра -r авто-поиск системы (без указания > -C и -U) не работает. Когда нет других систем, приходится бэкапить текущую корневую систему, это можно сделать только с -C/--current. Иначе всё к нему относящееся должно быть исключено из сканирования. > В данной ошибке всё же хочу обратить внимание, что даже при такой проверке > обращения происходят к `.../sda/sda1/removable`, а не `.../sda/removable`, > что видно при запуске с `bash -x` команд из упомянутой ошибки. Если этот > момент следует считать ожидаемым поведением, просьба закрыть данную ошибку. Речь об этом фрагменте: https://git.altlinux.org/gears/s/system-backup.git?p=system-backup.git;a=blob;f=system-backup;h=ce2607dbb3a60aead97609db1b0c37704af203f2;hb=23ae9f07867e62b2f2064cb9b61ce49e600eb424#l658 со строки 690. Сейчас кажется, что можно считать ошибкой, а можно и не считать. Если считать, то очень незначительной, по сравнению с другими накопившимися претензиями к system-backup, из-за чего я его полностью переделываю. Можно не считать, потому что цель фрагмента в строках 690-696 исключать из сканирования те устройства, которые непосредственно помечены как съёмные, если ключ -r/--removable не был указан. Можно считать, потому что для разделов или вложенных сущностей надо смотреть в другом месте. Тогда алгоритм надо значительно усложнять. Склоняюсь к тому, что пока не найдено однозначно плохого проявления, лучше ничего не трогать. Вообще интересно, что покажет lsblk для раздела на съёмном устройстве в графе RM. Ей вообще не всегда можно доверять, сейчас проверил и вот: NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 4.5T 0 disk └─sda1 8:1 0 4.5T 0 part /media/klark/WD-Elements-5T nvme0n1 259:0 0 953.9G 0 disk ├─nvme0n1p1 259:1 0 256M 0 part /boot/efi ├─nvme0n1p2 259:2 0 48G 0 part [SWAP] ├─nvme0n1p3 259:3 0 875G 0 part /home └─... Здесь по USB3 подключен внешний Western Digital Elements 5TB, это съёмный диск. Пока не будем закрывать, пусть висит...
Да, внешние диски почему-то не определяются как removable системой, об этом завёл ошибки: - https://bugzilla.altlinux.org/54500 (Внешний NVME диск не определяется как removable) - https://bugzilla.altlinux.org/54501 (Нельзя сделать диск removable с помощью правил udev)
Created attachment 18859 [details] Вывод system-backup -v (с -r и без него) > Можно не считать, потому что цель фрагмента в строках 690-696 исключать из сканирования те устройства, которые непосредственно помечены как съёмные, если ключ -r/--removable не был указан. Перепроверил с учётом https://bugzilla.altlinux.org/show_bug.cgi?id=54517#c3, т. е. загрузился со встроенного диска, подключил флешку (определяющуюся как removable) с установленной на ней системой, и начал резервную копию без явного указания цели. Как без -r, так и с ним резервная копия выполняется с флешки. Т. е. проверка всё же работает некорректно. В выводе -v видно, что /dev/sda определяется как removable и пропускается, если не указывать -r: > Auto-detecting targets... > - /dev/nvme0n1 protected directly > - /dev/nvme0n1p3 protected directly > - /dev/sda is removable, will be skipped Однако пропускается только сам /dev/sda, разделы не пропускаются, и начинается резервная копия. Подробный вывод system-backup см. во вложении. Данное поведение проверялось на: [p10+384295] ALT Workstation 10.4 x86_64 system-backup-0.1.4-alt1.noarch
Понятно, спасибо. В новой версии будем учитывать "съёмность" только дисков верхнего уровня.
Актуально для system-backup-0.1.5-alt2.noarch.
(In reply to Artem Varaksa from comment #10) > Актуально для system-backup-0.1.5-alt2.noarch. Под новой версией я имел ввиду переписать вс
(In reply to Artem Varaksa from comment #10) > Актуально для system-backup-0.1.5-alt2.noarch. Под новой версией я имел ввиду переписать всё кардинально, пока лишь экстренно срочные потребности закрываются, чтобы довести деплойную пару хоть до какого-то юзабельного состояния. Текущая версия монолитна и имеет много других недостатков.