Linux 具有相同inode的操作系统符号链接
我想知道如何使用相同的inode和相同的inode点创建2个符号链接(不是2个常规文件或硬链接和符号链接,而是2个符号链接)。我尝试了很多硬链接、符号链接和常规文件的组合,我可以有两个具有相同inode和相同inode点的文件,但它们不是都是符号链接 注意:我使用python3下的os库获取所有信息和“os.path.islink”以了解它是否是符号链接,以及“os.stat”和“os.lstat”Linux 具有相同inode的操作系统符号链接,linux,file,operating-system,symlink,Linux,File,Operating System,Symlink,我想知道如何使用相同的inode和相同的inode点创建2个符号链接(不是2个常规文件或硬链接和符号链接,而是2个符号链接)。我尝试了很多硬链接、符号链接和常规文件的组合,我可以有两个具有相同inode和相同inode点的文件,但它们不是都是符号链接 注意:我使用python3下的os库获取所有信息和“os.path.islink”以了解它是否是符号链接,以及“os.stat”和“os.lstat” 非常感谢。您必须确保用于制作硬链接的工具没有遵循您尝试链接的符号链接。在命令行中,您可以这样做,
非常感谢。您必须确保用于制作硬链接的工具没有遵循您尝试链接的符号链接。在命令行中,您可以这样做,例如:
cp -l -P symlink1 symlink2
这些选择意味着:
-l, --link
hard link files instead of copying
-P, --no-dereference
never follow symbolic links in SOURCE
在Python中,可以执行以下操作:
os.link ("symlink1", "symlink2", follow_symlinks = False)
感谢您的所有回答,但实际上我解决了这个问题,我可以有两个具有相同inode和相同inode点的文件 我需要创建文件符号链接的硬链接(例如文件f1) 然后我得到symlinkf1(1)的inode\u symlink1=inode\u hardlink\u 而inodepoint_symlinkf1=symlinkf1(2)的inodepoint_hardlink_ 但是(1)=/=(2)
这只有在Linux中才能很好地工作,在Linux中我将两个文件都作为软链接(使用os.islink(file_name)=True),奇怪的是,它在Mac os上不起作用 为什么要这样做?不能有两个符号链接使用相同的inode,但它们当然可以引用相同的inode。编程问题也是如此,而不是关于Linux设计的问题。请尝试SuperUser.com或unix.stackexchange.com。使两个名称指向同一inode的方法是使用
link()
系统调用。但是,如果源文件是一个符号链接,它将跟随它到达其目标,它不会使新名称引用与符号链接相同的inode。因此,除非您直接操作文件系统,否则无法执行您想要的操作。
ln symlinkf1 hardlink_ofsymlinkf1