我正在尝试复制 Debian 不稳定系统的根文件系统。执行此操作时,我收到以下警告:
gw:/# cp -xar / /mnt/1.tmp/
cp: will not create hard link `/mnt/1.tmp/var/run' to directory `/mnt/1.tmp/run'
cp: will not create hard link `/mnt/1.tmp/var/lock' to directory `/mnt/1.tmp/run/lock'
现在,根据我对 UNIX 工作方式的记忆,硬链接目录是被禁止的,事实上它也不允许我这样做:
ln: `run': hard link not allowed for directory
所以,我的问题是:
- 这些硬链接真的应该存在吗?
- 它们最初是如何被创造出来的?
- 如何在新文件系统上重新创建它们?
編輯:
看起来这些硬链接报告的是cp实际上不存在,这两个目录是用 --bind 挂载的,并且 cp 看到相同的 inode 编号并认为它是一个硬链接。
我仍然不完全理解所有这些 /run 东西应该如何工作,例如这个系统上没有安装 tmpfs。
无论如何,我将继续这一行动,除非发生一些有趣的事情或者有人给出更好的解释,否则我会接受 MealstroM 的回答,因为它对理解正在发生的事情有一定帮助。
答案1
你不应该这样做。这应该是这样的。检查一下为什么这样做 http://lists.fedoraproject.org/pipermail/devel/2011-March/150031.html
/run 现在是一个 tmpfs,而 /var/run 被绑定挂载到它。/var/lock 被绑定挂载到 /run/lock。应用程序可以像使用 /var/run 一样使用 /run。由于后者是 FHS/LSB,大多数应用程序应该只使用后者,目前只有早期启动的东西应该使用 /run。拥有适用此情况的软件包的人已经被告知
mount --bind /dir1 /dir2
如果你的问题没有在文章中通过链接描述,你可以尝试使用它来达到你的目的