Pero solo pude crear un enlace duro en el directorio /dev y no fue posible en otros directorios.
Como se muestra en el mensaje de error, no es posible crear un vínculo físico entre diferentes sistemas de archivos; solo puede crear enlaces blandos (simbólicos).
Por ejemplo, si su /home
está en una partición diferente a su partición raíz, no podrá vincular /tmp/foo
a /home/user/
.
Ahora, como señaló @RichardNeumann, /dev
generalmente se monta como un sistema de archivos devtmpfs. Vea este ejemplo:
[[email protected] ~]$ 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
Por lo tanto, solo puede crear enlaces duros a archivos en /dev
dentro de /dev
.
No se puede utilizar un enlace duro para lograr lo que desea, porque los enlaces duros no funcionan entre sistemas de archivos.
Sin embargo, puedes lograr lo que quieras con el mknod
comando.
-
Ejecute
ls -l /dev/devicefile
. Debería ver una salida como esta:crw-rw-rw- 1 root root 1, 9 Mar 29 15:46 /dev/urandom
- Tome nota del número en la columna de tamaño (
1, 9
). - Ejecute el comando
mknod /path/to/destination c 1 9
(sustituyendo los valores que desee).
¿Por qué funciona esto?
Los archivos de dispositivo son efectivamente enlaces duros a un archivo abstracto implementado por el kernel o los controladores del kernel. Si bien no puede crear enlaces duros a objetos del sistema de archivos desde otro sistema de archivos, estos no son objetos del sistema de archivos y, por lo tanto, al conocer sus números de referencia mayor y menor, puede crear una referencia a ellos desde cualquier sistema de archivos.
Los enlaces duros simplemente crean otra entrada en un directorio, apuntando a un archivo (donde archivo es algo parecido a un archivo, como un directorio). Por lo tanto, los enlaces físicos no pueden hacer referencia a un archivo en otro sistema de archivos.
Los enlaces blandos son tus amigos en este caso. Utilice ln -s
. Los enlaces suaves pueden atravesar sistemas de archivos e incluso pueden apuntar a algo que no está allí.