📜  UnixLinux 中的软链接和硬链接(1)

📅  最后修改于: 2023-12-03 15:20:54.213000             🧑  作者: Mango

Unix/Linux 中的软链接和硬链接

在 Unix/Linux 系统中,文件系统是以树形结构组成的层次结构,主要涉及到目录(dir)和文件(file)两种结构对象。但是,除了这两种结构对象以外,硬链接(hard link)和软链接(symbolic link,简称 symlink)也是文件系统中一种重要且常用的概念。

硬链接

硬链接是指在同一个文件系统中,为同一个文件创建一个额外的名称(即链接名),使得该文件在文件系统中有了多个访问入口,从而使得该文件的访问计数器增加1。硬链接不会复制文件内容,只是增加了对同一个文件的引用入口。

创建硬链接需要使用 ln 命令,并且需要保证该硬链接和原始文件在同一个文件系统中。创建硬链接的语法格式如下:

ln <original_file> <hard_link_name>

其中,original_file 表示原始文件名,hard_link_name 表示硬链接文件名。

下面是一个实例:

假设当前路径下有一个源文件 ../test/hardlink.dat,我们要为该文件创建一个硬链接 mydat,那么可以执行如下命令:

ln ../test/hardlink.dat mydat

创建硬链接之后,可以通过 ls -l 命令查看文件的权限信息和链接数目,如下所示:

$ ls -l
total 0
-rw-r--r--  2 user  group  0 Jul  4 18:49 hardlink.dat
-rw-r--r--  2 user  group  0 Jul  4 18:49 mydat

上述输出可以看到,文件 hardlink.dat 和文件 mydat 均被标记为硬链接文件,它们的链接计数器均增加到2。

硬链接的注意点有如下几点:

  • 硬链接必须在同一个文件系统(即同一设备或分区)上创建
  • 硬链接不支持目录的创建
软链接

软链接是指在同一个文件系统中,为一个文件创建了一个特殊的文件,该文件包含了指向原始文件的链接。软链接相当于是一个指针,它指向原始文件的位置。

创建软链接需要使用 ln -s 命令,并且可以链接到不同的文件系统和目录中。创建软链接的语法格式如下:

ln -s <original_file> <symlink_name>

其中,original_file 表示原始文件名,symlink_name 表示软链接名。

下面是一个实例:

假设当前路径下有一个源文件 ../test/softlink.dat,我们要为该文件创建一个软链接 soft_link,那么可以执行如下命令:

ln -s ../test/softlink.dat soft_link

创建软链接之后,可以通过 ls -l 命令查看软链接的信息,如下所示:

$ ls -l
total 0
lrwxr-xr-x  1 user  group  16 Jul  4 18:51 soft_link -> ../test/softlink.dat
-rw-r--r--  1 user  group   0 Jul  4 18:49 softlink.dat

上述输出可以看到,文件 soft_link 标记为软链接文件,它指向的路径是 ../test/softlink.dat

软链接的注意点有如下几点:

  • 软链接文件大小是常数长度,不会随着原始文件的变化而变化
  • 重命名或移动软链接不会影响原始文件的内容,但是删除软链接会导致原始文件无法访问