Я выполняю восстановление из предыдущей резервной копии моей системы FreeBSD, и при восстановлении возникают проблемы. /
(исключая точки монтирования). Проблема в том, что /rescue
заполняет /
раздел (до такой степени, что я не могу восстановить весь свой /
раздел), занимая больше места, чем было изначально.
Я полагаю это потому что /rescue
содержит ссылки, а не файлы, и эти файлы, а не ссылки, восстанавливаются в моем /
раздел. Я пробовал восстанавливать оба tar
и rsync
:
( cd /mybak/ ; tar --one-file-system -cvf - . ) | ( cd /newroot/ ; tar -xpf - . )
и
/usr/local/bin/rsync -va --delete --one-file-system /mybak/ /newroot/
Оба метода приводят к моей проблеме. Что я могу сделать для правильного восстановления (или первоначального резервного копирования) /
раздел, в том числе /rescue
, чтобы восстановление не занимало больше места на диске, чем исходное?
Как вы догадались, проблема здесь в /rescue
не содержит много файлов - он содержит один файл (inode) с множеством имен (жесткие ссылки). В результате при резервном копировании или восстановлении /rescue
вам необходимо использовать программное обеспечение, поддерживающее жесткие ссылки.
Для rsync
это означает -H
флаг.
Для tar
это не должно требовать особого волшебства: BSD tar (и GNU tar) достаточно умен, чтобы знать, что такое жесткая ссылка. Для других программ резервного копирования вам необходимо проверить документацию.
Если вы используете обычные инструменты Unix для создания резервных копий вашей системы (и захвата целых файловых систем), вам может быть лучше использовать dump
и restore
. Помимо возможности использовать снимки состояния UFS, у более традиционных утилит есть и другие преимущества.