首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强行创建目录硬链接(S)?

问强行创建目录硬链接(S)?
EN

Unix & Linux用户
提问于 2013-05-09 13:01:45
回答 2查看 3.4K关注 0票数 6

我理解为什么几乎每个unix版本都不允许硬链接目录(事实上,OS上的HFS+是我唯一知道的,但即使这样做自己也不容易)。然而,理论上所有文件系统都支持硬链接目录,因为所有目录至少包含一个指向自己的额外硬链接,以及子目录中指向父目录的额外硬链接。

现在,我意识到,如果使用不当,硬链接可能是危险的,因为它可以创造出很少程序会检查的周期性结构,从而陷入无限循环。然而,我希望使用硬链接来创建一个时间机器风格的备份,它可以适用于任何unix。我不认为这种结构会很危险,因为链接只是指向以前的备份;不应该存在周期性链接的风险。在我的例子中,我目前只是使用rsync来创建指向现有文件的硬链接,但是这是缓慢和浪费的,特别是对于非常大的备份,尤其是如果我已经知道哪些目录没有变化。

考虑到这一点,有没有办法强制在unix变体上创建目录硬链接?ln大概是不好的,因为这是许多unix口味的限制以防止硬链接目录的地方,而支持硬链接目录的ln版本明确指出操作可能会失败。但是对于那些知道风险,并且知道他们的用例是安全的人来说,是否有任何方法来真正创建链接呢?理想情况下,对于shell脚本,但是如果我需要编译一个小程序来完成它,那么我想我可以。

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2013-05-09 13:06:44

不要这样做。如果您希望有一个使用硬链接来节省空间的备份系统,最好将rsync与--link-dest一起使用,这将适当地将硬链接文件用于节省空间,而不会导致由此引起的问题(即目录之间的硬链接是文件系统的损坏,并将导致它报告错误的inode计数+ files +通常由于不是DAG而具有未知的语义)。

票数 5
EN

Unix & Linux用户

发布于 2017-01-03 02:49:46

您可以使用debugfs来完成此操作。在没有挂载文件系统的情况下,执行debugfs -w /dev/device_name。然后,在调试器提示符下,如果通常可以使用指向目录的硬链接,那么使用link命令的方式与使用ln的方式相同。(例如link /original_dir /new_link)与ln和link系统调用不同的是,调试器中的link命令允许创建指向目录的硬链接。完成后,只需键入quit即可。

不过,正如其他人所说,不要这样做。这会引起问题。我这么说是因为您问了如何强制创建一个目录硬链接,这就是您要做的。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/75225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档