当我想以根模式在我的/home
目录中创建一个硬链接时,Linux显示了以下错误消息:
ln: failed to create hard link ‘my_sdb’ => ‘/dev/sda1’: Invalid cross-device link
上述错误消息如下所示:
# cd /home/user/
# ln /dev/sda1 my_sdb
但是我只能在/dev
目录中创建一个硬链接,在其他目录中是不可能的。
现在,我想知道如何从/home
目录(或其他目录)中的现有设备文件(如D5
)创建硬链接?
发布于 2018-03-29 10:52:29
但是我只能在/dev目录中创建一个硬链接,在其他目录中是不可能的。
正如错误消息所示,不可能在不同的文件系统之间创建硬链接;您只能创建软(符号)链接。
例如,如果/home
位于与根分区不同的分区中,则无法将/tmp/foo
硬链接到/home/user/
。
现在,正如@RichardNeumann所指出的,/dev
通常作为devtmpfs文件系统挂载。参见此示例:
[dr01@centos7 ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/centos_centos7-root 46110724 3792836 42317888 9% /
devtmpfs 4063180 0 4063180 0% /dev
tmpfs 4078924 0 4078924 0% /dev/shm
tmpfs 4078924 9148 4069776 1% /run
tmpfs 4078924 0 4078924 0% /sys/fs/cgroup
/dev/sda1 1038336 202684 835652 20% /boot
tmpfs 815788 28 815760 1% /run/user/1000
因此,您只能在/dev
中/dev
中创建指向文件的硬链接。
发布于 2018-03-29 16:09:56
硬链接不能用于实现所需的内容,因为硬链接不能在文件系统之间工作。
但是,您可以使用mknod
命令实现您想要的结果。
ls -l /dev/devicefile
。您应该看到这样的输出: crw-rw-rw- 1根根1,3月9日15:46 /dev/urandom1, 9
)中的数字。mknod /path/to/destination c 1 9
(替换所需的值)。设备文件实际上是与内核或内核驱动程序实现的抽象文件的硬链接。虽然您不能从另一个文件系统创建指向文件系统对象的硬链接,但这些不是文件系统对象,因此,通过了解它们的主引用号和次要引用号,您可以从任何文件系统创建对它们的引用。
发布于 2018-03-29 12:31:22
硬链接只是在目录中创建另一个条目,指向一个文件(其中文件是类似的文件,例如目录)。因此,硬链接不能引用另一个文件系统中的文件.
在这种情况下,软链接是你的朋友。使用ln -s
。软件链接可以跨文件系统,甚至可以指向不存在的东西。
https://unix.stackexchange.com/questions/434278
复制相似问题