📜  硬链接与软链接 linux - Shell-Bash (1)

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

硬链接与软链接

在 Linux 系统中,我们常常需要对文件进行链接操作,以方便对文件的访问与管理。硬链接和软链接是两种常用的链接方式。

硬链接

硬链接是指多个文件名指向同一个数据块的链接方式。具有以下特点:

  • 硬链接只能针对文件进行操作,不能对目录进行操作。
  • 硬链接的多个文件名在文件系统中没有任何区别,都是指向同一个数据块。
  • 移动或者删除其中任意一个文件,都不会影响其他文件的访问。
  • 只有当文件名的链接数量为 0 时,文件才会被真正的删除。
创建硬链接

在 Linux 系统中,可以使用 ln 命令来创建硬链接。语法如下:

ln 源文件目录/源文件名 链接后的文件目录/链接后的文件名

例如,我们可以使用以下命令,将文件 file1 创建一个硬链接 file2

ln /path/to/file1 /path/to/file2

通过执行 ls -li 命令,可以查看文件的 inode 号和硬链接数量。例如:

$ ls -li /path/to/file1 /path/to/file2
123456 -rw-r--r-- 2 user1 user1 0  Oct 21 18:00 /path/to/file1
123456 -rw-r--r-- 2 user1 user1 0  Oct 21 18:00 /path/to/file2

从上述输出信息可以看到,文件 file1file2 的 inode 号相同,并且链接数量均为 2。

软链接

软链接也被称为符号链接,是通过一个指向原文件的快捷方式进行链接的一种方式。具有以下特点:

  • 软链接可以链接文件或者目录。
  • 软链接记录的是原始文件的路径,因此链接文件的大小很小。
  • 如果原始文件被删除或者移动,软链接将不再指向正确的文件,访问软链接时将会出错。
创建软链接

在 Linux 系统中,可以使用 ln 命令的 -s 选项来创建软链接。语法如下:

ln -s 源文件目录/源文件名 链接后的文件目录/链接后的文件名

例如,我们可以使用以下命令,将文件 file1 创建一个软链接 file2

ln -s /path/to/file1 /path/to/file2

通过执行 ls -l 命令,可以查看文件的 inode 号和硬链接数量。例如:

$ ls -l /path/to/file1 /path/to/file2
-rw-r--r-- 1 user1 user1   0 Oct 21 18:00 /path/to/file1
lrwxrwxrwx 1 user1 user1  12 Oct 21 18:00 /path/to/file2 -> /path/to/file1

从上述输出信息可以看到,file2 文件是个软链接,其文件名末尾有箭头 ->,并且它所指向的是另一个文件(相对或绝对路径均可),这里指向了 file1