LINUX.ORG.RU

Резервное копирование попадает в бесконечный цикл

 , , ,


0

1

Привет всем!

Долгое время пользовался rsync для резервного копирования системы и данных, и все было хорошо. Вышел новый минорный Дебиан, и я решил сделать бэкап системы (тем же самым скриптом, как и всегда).

На этот раз rsync перестает печатать строки после var/log/faillog, потом свободное место на внешнем диске, сколько бы его ни было, заканчивается.

Возникла мысль, что где-то, вероятно, образуются циклические ссылки, что я и проверил командой

find / -follow -printf ""
В результате выводится огромное число сообщений типа
find: Обнаружено зацикливание в файловой системе; ‘/sys/devices/pci0000:00/0000:00:1c.3/subsystem/devices/0000:00:1e.0/pci_bus/0000:11/subsystem/0000:09/device/driver/0000:00:1c.1/firmware_node/subsystem/devices/PNP0800:00/physical_node/subsystem/devices/PNP0C0E:00/firmware_node/driver/LNXPWRBN:00/input/input9/subsystem/event13/device/device/subsystem/devices/usb5/driver/4-1.1.4/4-1.1.4:1.0/host4/subsystem/devices/host1/scsi_host/host1/subsystem/host0/device/target0:0:0/0:0:0:0/block/sda/sda3/subsystem/sdb/subsystem’ является частью той же петли файловой системы что и ‘/sys/devices/pci0000:00/0000:00:1c.3/subsystem/devices/0000:00:1e.0/pci_bus/0000:11/subsystem/0000:09/device/driver/0000:00:1c.1/firmware_node/subsystem/devices/PNP0800:00/physical_node/subsystem/devices/PNP0C0E:00/firmware_node/driver/LNXPWRBN:00/input/input9/subsystem/event13/device/device/subsystem/devices/usb5/driver/4-1.1.4/4-1.1.4:1.0/host4/subsystem/devices/host1/scsi_host/host1/subsystem/host0/device/target0:0:0/0:0:0:0/block/sda/sda3/subsystem’

Удалил старый бэкап полностью и переписал команду (/dev/sda1 смонтирован на /mnt) как

rsync -av --exclude /mnt/mnt --exclude /tmp --exclude /sys/devices --delete /mnt/* /media/OLD/backup/devuan/
но это не помогло.

Как исправить ситуацию?

★★★★★

Это «огромное» число сообщений надо бы предварительно пропарсить (sed, grep, awk, uniq) чтобы диагностировать корневые точки циклов. Верояно /sys/devices - не единственный корень таких ссылок.

SunDoc ()

А у тебя там ветвистое дерево монтирований? Я бы просто -x (don't cross filesystem boundaries) использовал, которое копирует только то, что на этой файловой системе, без всяких монтирований.

turtle_bazon ★★★ ()

MikeWortin, mittorn, turtle_bazon

Пробовал

mount -o bind / /mnt/root
rsync -avx --exclude /mnt/root/mnt --exclude /mnt/root/tmp --exclude /mnt/root/dev --exclude /mnt/root/sys --exclude /mnt/root/proc --exclude /mnt/root/run --exclude /mnt/root/media --delete /mnt/root/* /media/OLD/backup/devuan/
не работает. Похоже, зацикливание в пределах одной ФС.

denton ★★★★★ ()
Ответ на: комментарий от denton

ты бэкапишь корень прям в корень?
ну попробуй cp -a, хотя это не удобно для регулярных бэкапов.
и exclude делать не надо, при бинде смонтированные фс не пробрасываются
find вероятно следует симлинкам. Тебе надо копировать симлинки как есть, а не следовать им

mittorn ★★★★★ ()
Последнее исправление: mittorn (всего исправлений: 2)
Ответ на: комментарий от mittorn

ты бэкапишь корень прям в корень?

Если я правильно понял вопрос: монтирую /, копирую содержимое в каталог на внешнем жестком диске (просто в виде файлов).

Тебе надо копировать симлинки как есть, а не следовать им

По умолчанию rsync так и поступает. У меня несколько лет скрипт стабильно работал, и вдруг внезапно перестал. Из системных изменений - обновления, понижение версии иксов. Больше никаких серьезных изменений, вроде, не было.

denton ★★★★★ ()