我正在从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快照的function外,更传统的工具还有其他优点。