FreeBSD恢复/救援

我正在从FreeBSD系统的以前的备份中恢复,并在恢复/ (不包括挂载点)时遇到麻烦。 问题是/rescue通过占用比原先更多的地方来填充/分区(以至于我无法恢复我的整个分区)。

我想这是因为/rescue包含链接而不是文件,文件而不是链接被恢复到我的/分区。 我试着用tarrsync恢复:

 ( 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工具来备份你的系统(并且抓取整个文件系统),那么使用dumprestore可能会更好。 除了使用UFS快照的function外,更传统的工具还有其他优点。