Linux文件链接

简介: 这篇文章将学习Linux中的文件链接,文件链接分为软链接和硬链接,今天通过本篇文章希望读者可以了解软链接和硬链接的特性以及区别,并学会如何创建软链接和硬链接,下面进入学习吧!

前言


这篇文章将学习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


d2811bd9beef46a4a74791f02e202184.png


如图可看到桌面的链接已经创建成功了,发现文件图标的右下角有个箭头,和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: 没有那个文件或目录


0f6b133fc6a343d88d99d81fba0f1aa4.png


如图看到此时的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": 无效的跨设备连接


2e1a3d669f80442285e97d3f72c573b5.png


在/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


48130ed2c0a942cbbdc3895de337272b.png


注意看如图红色框内的内容,第一次创建一个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


3ef8e3bba2cd451b96217a98428187e1.png


如代码输出所示: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。


总结


 本篇文章主要介绍了软链接和硬链接,以及学习如何使用这两种链接,了解这两种链接的区别,还有软链接的应用场景,对两种链接进行了详细的测试。





相关文章
|
4天前
|
Linux
Linux 中经常见到的 gz 文件
Linux 中经常见到的 gz 文件
|
14天前
|
网络协议 Unix Linux
Linux 多种方式实现文件共享(三)NFS 6
【8月更文挑战第6天】NFS 即网络文件系统,是一种使用于分布式文件系统的协议,NFS 功能是通过网络让不同的机器,不同的操作系统能够彼此分享各自的数据,让应用程序在客户端通过网络访问位于服务器磁盘中的数据
49 13
|
4天前
|
存储 Linux Windows
Linux zip命令:压缩文件或目录
我们经常会在 Windows 系统上使用 “.zip”格式压缩文件,其实“.zip”格式文件是 Windows 和 Linux 系统都通用的压缩文件类型,属于几种主流的压缩格式(zip、rar等)之一,是一种相当简单的分别压缩每个文件的存储格式,本节要讲的 zip 命令,类似于 Windows 系统中的 winzip 压缩程序,其基本格式如下: [root@localhost ~]#zip [选项] 压缩包名 源文件或源目录列表 注意,zip 压缩命令需要手工指定压缩之后的压缩包名,注意写清楚扩展名,以便解压缩时使用。 下面给大家举几个例子。 【例 1】zip 命令的基本使用。 [r
18 0
Linux zip命令:压缩文件或目录
|
7天前
|
Linux Shell 数据库
【绝技大公开】Linux文件查找新招式:打破常规,探索那些鲜为人知的技巧,让你成为真正的文件追踪大师!
【8月更文挑战第13天】文件查找是Linux用户必备技能,能大幅提升工作效率。本文介绍几种高效查找方法,包括使用`column`美化`find`输出、利用`locate`和`mlocate`快速搜索、编写脚本自动化任务、采用`fd`现代工具提升查找体验,以及结合`grep`和`rg`搜索文件内容。此外,还推荐了`Gnome Search Tool`和`Albert`等图形界面工具,为用户提供多样选择。掌握这些技巧,让你的工作更加得心应手。
21 2
|
13天前
|
存储 网络协议 Linux
Linux 多种方式实现文件共享(四)iSCSI 磁盘共享服务 7
【8月更文挑战第7天】iSCSI技术是一种新储存技术, iSCSI 提供了在 IP 网络封装 SCSI 命令,且以TCP/IP协议传输.
35 5
|
11天前
|
Linux
Linux专栏07:Linux基本指令之文件搜索指令
Linux专栏07:Linux基本指令之文件搜索指令
34 2
|
14天前
|
存储 Linux 开发工具
Linux 多种方式实现文件共享(二)Samba 5
【8月更文挑战第5天】Samba 文件共享
39 5
|
14天前
|
Linux Perl
Linux进行文件字符串替换
【8月更文挑战第5天】Linux进行文件字符串替换
74 3
|
5天前
|
Linux
Linux 堡垒机命令行中如何上传下载文件(SecureCRT - SFTP)
Linux 堡垒机命令行中如何上传下载文件(SecureCRT - SFTP)
25 0
|
7天前
|
关系型数据库 MySQL Linux
Linux——日志文件按天切割
Linux——日志文件按天切割
22 0