ln 它的功能是为某一个文件在另外一个位置建立一个同步的链接。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用 ln 命令链接(link)它就可以,不必重复的占用磁盘空间。非常类似于 Windows 系统中的快捷方式,但是又比超链接要强很多。

命令格式:

ln [OPTION] TARGET LINK_NAME

命令功能:

Linux 文件系统中,有所谓的链接 (link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接 (hard link) 与软链接 (symbolic link),硬链接是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接存在同一个文件系统中,而软链接可以跨越不同的文件系统。

软链接是一个文件指向另一个文件的快捷方式 shortcut,软链接指向的内容是真正文件或者目录所在的地方。软链接的一个优势是可以跨越分区或者文件系统创建。

  1. 软链接,以路径的形式存在。类似于 Windows 操作系统中的快捷方式
  2. 软链接可以 跨文件系统 ,硬链接不可以
  3. 软链接可以对一个不存在的文件名进行链接
  4. 软链接可以对目录进行链接

文件系统的每一个文件都被一个 inode 文件来记录,大多数时候并不需要关心 inode 的存在,但是当创建 hard link 时就需要注意到 inode 的存在。hard link 允许我们给同一个文件不同的名字,这个技术的关键就在于 inode number,硬链接几乎不会产生太多额外的空间占用。

  1. 硬链接,以文件副本的形式存在。但不占用实际空间。
  2. 不允许给目录创建硬链接
  3. 硬链接只有在同一个文件系统中才能创建

这里有两点要注意:

第一,ln 命令会保持每一处链接文件的同步性,也就是,不论改动了哪一处,其它的文件都会发生相同的变化;

第二,ln 的链接又分软链接和硬链接两种,软链接就是 ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数 -s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

ln 指令用在链接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。

命令参数:

必要参数:

-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程

可选参数:

-S “-S 字尾备份字符串  ”或 “--suffix= 字尾备份字符串 ”
-V “-V 备份方式 ”或“--version-control= 备份方式 ”
--help 显示帮助信息
--version 显示版本信息

使用实例:

给文件创建软链接

最常见的就是在 nginx 的配置中,创建一个软连接来 enable 一个站点,当在 sites-available 中配置好一个虚拟主机之后,使用软连接在 sites-enabled 中启用

命令:

ln -s /etc/nginx/sites-available/xxx.einverne.info /etc/nginx/sites-enabled/

此时会在 sites-enabled 中生成一个文件 xxx.einverne.info 来指向 sites-available 文件夹中的文件。

使用 ls -al 来查看时会有一个小箭头指向原来的文件。

linkfile -> originfile

给文件创建硬链接

命令:

ln TARGET LINK_NAME

文件各项属性相同

将文件链接为另一个目录中的相同名字

命令:

ln TARGET FOLDER

说明:

如果 ln 后面为文件夹的话,会在该文件夹内创建一个 TARGET 文件链接。

给目录创建软链接

注意目录只能创建软链接

命令:

ln -sv /home/username/test1 /home/username/test2

说明:

  • 目录创建链接必须用绝对路径,相对路径创建会不成功,会提示:符号连接的层数过多
  • 在链接目标目录中修改文件都会在源文件目录中同步变化

其他

删除和重建链接原文件对硬链接和软链接的影响

  1. 源文件被删除后不会影响硬链接文件;但是软链接文件提示源文件已经不存在
  2. 重建源文件后,软链接链接成功,找到了链接文件系统;重建后,硬链接文件并没有受到源文件影响,硬链接文件的内容还是保留了删除前源文件的内容,说明硬链接已经失效