前言
这篇文章将学习Linux中的文件链接,文件链接分为软链接和硬链接,今天通过本篇文章希望读者可以了解软链接和硬链接的特性以及区别,并学会如何创建软链接和硬链接,下面进入学习吧!
一、什么是文件链接?
链接文件在文件之间创建链接。这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称。
二、详细介绍
1.符号链接(软链接)
命令:ln -s 源文件 链接文件
s:symbolic link/软链接,所以-s就是创建软链接。
1)创建文件输入内容,并创建软链接
代码如下(示例):
//创建file1文件并输入内容 [root@localhost ~]# echo "这是file1" > /mnt/disk3/file1 //创建file1的链接在桌面名为file1-1 [root@localhost ~]# ln -s /mnt/disk3/file1 /root/桌面/file-1
如图可看到桌面的链接已经创建成功了,发现文件图标的右下角有个箭头,和Windows的快捷方式是一样的标志,当然它的功能也和快捷方式相同,这个时候file1成为源文件。
2)查看file1-1的内容
代码如下(示例):
//查看file1-1的内容 [root@localhost ~]# cat /root/桌面/file1-1 这是file1 //追加信息到file1中 [root@localhost ~]# echo "软链接创建成功" >> /mnt/disk3/file1 //查看file1-1的内容 [root@localhost ~]# cat /root/桌面/file1-1 这是file1 软链接创建成功 //查看file1内容 [root@localhost ~]# cat /mnt/disk3/file1 这是file1 软链接创建成功
更改 file1的内容后,查看file1和file1-1的信息是一致的。
3)删除软链接文件和删除源文件的区别
代码如下(示例):
//创建file1的另一个软链接名为file1-2 [root@localhost ~]# ln -s /mnt/disk3/file1 /root/桌面/file1-2 //删除file1-1文件 [root@localhost ~]# rm -rf /root/桌面/file1-1 //查看file1文件,仍然可以查看 [root@localhost ~]# cat /mnt/disk3/file1 这是file1 软链接创建成功 //删除file1文件(源文件) [root@localhost ~]# rm -rf /mnt/disk3/file1 //查看file1-2内容,已经查不到了 [root@localhost ~]# cat /root/桌面/file1-2 cat: /root/桌面/file1-2: 没有那个文件或目录
如图看到此时的file1-2文件信息爆红,并且链接源文件名称闪烁白色。
4)重新在disk3目录下创建file1文件查看file1-2内容
代码如下(示例):
[root@localhost ~]# echo 1111 > /mnt/disk3/file1 [root@localhost ~]# cat /root/桌面/file1-2 1111
重新在原来位置创建文件,链接文件又可以打开查看。
5)对目录进行软链接创建
代码如下(示例):
//创建文件夹content1 [root@localhost ~]# mkdir /test/content1 //创建content1的软链接---content1-1 [root@localhost ~]# ln -s /test/content1 /root/桌面/content1-1 //在content1下创建一个file0文件 [root@localhost ~]# touch /test/content1/file0 //查看content1目录下的文件 [root@localhost ~]# ll /test/content1 总用量 0 -rw-r--r--. 1 root root 0 10月 25 19:31 file0 //查看content1-1下的文件 [root@localhost ~]# ll /root/桌面/content1-1/ 总用量 0 -rw-r--r--. 1 root root 0 10月 25 19:31 file0
总结
软链接像快捷方式,可以对文件和目录做软链接。
软链接记录的只是源文件。
软链接失去源文件不可用。
2.硬链接
命令:ln 源文件 链接文件
注意:硬链接只能和源文件在同一分区才能成功创建,不在同一分区创建会失败;
不允许将硬链接指向目录;
硬链接的inode号相同,但并不占用inode。
1)在不同分区下创建硬链接
代码如下(示例):
//在disk1创建disk3下file1的硬链接,创建失败 [root@localhost ~]# ln /mnt/disk3/file1 /mnt/disk1/file1-1 ln: 无法创建硬链接"/mnt/disk1/file1-1" => "/mnt/disk3/file1": 无效的跨设备连接
在/mnt/disk1下创建/mnt/disk3/file1文件的硬链接创建失败,因为如图,disk1是sdb1分区的挂载点,disk3是sdb3分区的挂载点 ,所以创建硬链接失败。
2)在相同分区下创建硬链接,并观察
代码如下(示例):
//在disk3下创建file1的硬链接 [root@localhost ~]# ln /mnt/disk3/file1 /mnt/disk3/file1-1 [root@localhost ~]# ll /mnt/disk3 总用量 16 -rw-r--r--. 2 root root 5 10月 25 16:59 file1 -rw-r--r--. 2 root root 5 10月 25 16:59 file1-1 drwx------. 2 root root 12288 10月 19 13:56 lost+found //在file1中输入内容 [root@localhost ~]# echo "hello" > /mnt/disk3/file1 [root@localhost ~]# cat /mnt/disk3/file1 hello [root@localhost ~]# cat /mnt/disk3/file1-1 hello [root@localhost ~]# cat /mnt/disk3/file1-2 hello [root@localhost ~]# cat /mnt/disk3/file1-3 hello
注意看如图红色框内的内容,第一次创建一个file1的硬链接,查看file1和file1-1的文件信息,链接数都是2,当接下来创建flie1-2和file1-3两个file1的硬链接后查看他们的文件信息发现链接数都变成了4,所以之前文章的链接数代表的是硬链接的数目。
3)创建目录的硬链接
代码如下(示例):
//创建目录 [root@localhost ~]# mkdir /mnt/disk3/content1 //在同一分区创建目录的硬链接,失败 [root@localhost ~]# ln /mnt/disk3/content1 /mnt/disk3/content1-1 ln: "/mnt/disk3/content1": 不允许将硬链接指向目录
如代码提示所示,满足在同一分区创建硬链接,但是因为是目录的硬链接所以创建失败,所以硬链接不能指向目录。
4)查看所有硬链接的inode
代码如下(示例):
//查看inode号 [root@localhost ~]# ll -i /mnt/disk3/ 总用量 22 13 drwxr-xr-x. 2 root root 1024 10月 25 20:01 content1 12 -rw-r--r--. 4 root root 6 10月 25 20:03 file1 12 -rw-r--r--. 4 root root 6 10月 25 20:03 file1-1 12 -rw-r--r--. 4 root root 6 10月 25 20:03 file1-2 12 -rw-r--r--. 4 root root 6 10月 25 20:03 file1-3 11 drwx------. 2 root root 12288 10月 19 13:56 lost+found [root@localhost ~]# df -i /mnt/disk3 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 /dev/sdb3 51200 13 51187 1% /mnt/disk3 [root@localhost ~]# ln /mnt/disk3/file1 /mnt/disk3/file1-4 [root@localhost ~]# df -i /mnt/disk3 文件系统 Inode 已用(I) 可用(I) 已用(I)% 挂载点 /dev/sdb3 51200 13 51187 1% /mnt/disk3
如代码输出所示:file1、file1-1、file1-2、file1-3的inode号都是12,并且在创建file1-4硬链接之前disk3的可用inode数为51187,在创建file1-4之后,disk3的可用inode数仍然是51187,所以硬链接是不占用inode的。
5)删除源文件,查看硬链接
测试软链接的时候,我们删除源文件后,软链接的文件就打不开了,对比软链接,看看硬链接删除源文件之后,硬链接文件是否能够打开。
代码如下(示例):
//删除file1文件 [root@localhost ~]# rm -rf /mnt/disk3/file1 [root@localhost ~]# ls /mnt/disk3 content1 file1-1 file1-2 file1-3 file1-4 lost+found [root@localhost ~]# cat /mnt/disk3/file1-1 hello [root@localhost ~]# cat /mnt/disk3/file1-2 hello [root@localhost ~]# cat /mnt/disk3/file1-3 hello [root@localhost ~]# cat /mnt/disk3/file1-4 hello
如上述代码所示:在删除源文件之后,硬链接文件依然可以查看。
总结
硬链接只能针对文件做,不能对目录做。
硬链接只能在同分区做。
在删除源文件之后,硬链接依然可以打开。
硬链接不占用inode。
3.软链接与硬链接的区别
软链接:
软链接可以在不同分区下创建,可以对目录和文件进行操作,当源文件被删除的时候,软链接也会无法使用,我们一般使用的是软链接,在我们下载软件的时候会发现,桌面的软件图标都是软件应用程序的软链接,因为应用程序需要和各种文件在一个目录下才能使用,如果不用软链接,我们打开软件的时候需要到指定的目录下进行打开应用程序,这就显得很麻烦,有了软链接我们只需要打开应用程序的软链接即可打开一个软件。
硬链接:
硬链接只能针对文件来做,不可以对目录进行操作,并且硬链接只能在和源文件同一分区下才能进行创建,这就比软链接有局限性,硬链接在删除源文件后,硬链接依然可以使用,和复制有着一样的效果,只是硬链接不占用inode。
总结
本篇文章主要介绍了软链接和硬链接,以及学习如何使用这两种链接,了解这两种链接的区别,还有软链接的应用场景,对两种链接进行了详细的测试。