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 开发工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
7种比较Linux中文本文件的最佳工具
|
2月前
|
存储 数据管理 Linux
区分Linux中.tar文件与.tar.gz文件的不同。
总之,".tar"文件提供了一种方便的文件整理方式,其归档但不压缩的特点适用于快速打包和解压,而".tar.gz"文件通过额外的压缩步骤,尽管处理时间更长,但可以减小文件尺寸,更适合于需要节约存储空间或进行文件传输的场景。用户在选择时应根据具体需求,考虑两种格式各自的优劣。
395 13
|
3月前
|
安全 Linux
Linux赋予文件000权限的恢复技巧
以上这些步骤就像是打开一扇锁住的门,步骤看似简单,但是背后却有着严格的逻辑和规则。切记,在任何时候,变更文件权限都要考虑安全性,不要无谓地放宽权限,那样可能
133 16
|
3月前
|
存储 Linux 数据处理
深入剖析Linux中一切即文件的哲学和重定向的机制
在计算机的奇妙世界中,Linux的这套哲学和机制减少了不同类型资源的处理方式,简化了抽象的概念,并蕴藏着强大的灵活性。就像变戏法一样,轻轻松松地在文件、程序与设备之间转换数据流,标准输入、输出、错误流就在指尖舞动,程序的交互和数据处理因此变得既高效又富有乐趣。
57 4
|
4月前
|
Linux
【Linux】 Linux文件I/O常见操作技巧
以上就是Linux文件I/O操作的一些技巧,接纳它们,让它们成为你在Linux世界中的得力伙伴,工作会变得轻松许多。不过记住,技巧的运用也需要根据实际情况灵活掌握,毕竟,最适合的才是最好的。
124 28
|
4月前
|
Ubuntu Linux
"unzip"命令解析:Linux下如何处理压缩文件。
总的来说,`unzip`命令是Linux系统下一款实用而方便的ZIP格式文件处理工具。本文通过简明扼要的方式,详细介绍了在各类Linux发行版上安装 `unzip`的方法,以及如何使用 `unzip`命令进行解压、查看和测试ZIP文件。希望本文章能为用户带来实际帮助,提高日常操作的效率。
606 12
|
5月前
|
Linux Shell
Linux系统下快速批量创建和删除文件的方法
总的来说,使用shell脚本来批量处理文件是一种非常强大的工具,只要你愿意花时间学习和实践,你会发现它能大大提高你的工作效率。
320 19
|
3月前
|
Linux
linux文件重命名命令
本指南介绍Linux文件重命名方法,包括单文件操作的`mv`命令和批量处理的`rename`命令。`mv`可简单更改文件名并保留扩展名,如`mv old_file.txt new_name.txt`;`rename`支持正则表达式,适用于复杂批量操作,如`rename 's/2023/2024/' *.log`。提供实用技巧如大小写转换、数字序列处理等,并提醒覆盖风险与版本差异,建议使用`-n`参数预览效果。
|
6月前
|
监控 Linux
Linux基础:文件和目录类命令分析。
总的来说,这些基础命令,像是Linux中藏匿的小矮人,每一次我们使用他们,他们就把我们的指令准确的传递给Linux,让我们的指令变为现实。所以,现在就开始你的Linux之旅,挥动你的命令之剑,探索这个充满神秘而又奇妙的世界吧!
142 19
|
5月前
|
缓存 Linux
如何创建Linux交换文件?Linux交换文件最新创建方法
Swap是Linux中的虚拟内存空间,用于在物理内存不足时将非活动进程移至磁盘,从而优化活动进程的性能。通过创建交换文件(如1GB),可灵活调整交换空间而无需重新分区。步骤包括:使用`fallocate`或`dd`创建文件、设置权限 (`chmod 600`)、格式化 (`mkswap`)、启用交换 (`swapon`)、修改`/etc/fstab`以持久化配置,以及调整`vm.swappiness`值(默认60,建议从10开始)来平衡内存与交换的使用。最后通过`swapon -s`检查状态并重启生效。此方法适用于VPS和专用服务器,需以root用户操作。
157 2