2-18 Linux中的连接文件 --- 软链接

2-18 Linux中的连接文件 --- 软链接,第1张

Linux中的软链接类似于windows中的快捷方式。 创建方式:ln -s oldfile newfile。     例:文件软链接 (目录软链接也是一样的 *** 作方式)。     1、tmp 目录下创建一个 test.txt 文件。     2、ln -s test.txt test,为 test.txt 文件创建一个名为 test 的软链接。     3、ll 查看详情会发现有一个蓝色的 test -->test.txt (test 指向 test.txt)。同时文件类型是            l 开头,l 是指链接文件的意思。      4、对软链接文件进行 vim *** 作。输入This is ln -s test. :wq保存并退出。     5、通过cat test 和 cat test.txt 查看内容。得出的结果都是一样的。既软链接 test 和 test.txt              已经建立关联,对 test *** 作等于对 test.txt *** 作。tips:软链接特点。     1、可以对不存在的文件创建软链接。     tmp 目录下除了 test 和 test.txt 并没有其他文件。     此时 ln -s abc.txt t1,为不存在的 abc.txt 文件创建一个 t1 的软链接。t1 软链接是可以创建        的,只是由于没有真实存在的 abc.txt 文件。通过 ll 查看详情,系统会在 abc.txt 处用红色闪      烁高光发出提示,意指abc.txt文件不存在。     此时,tmp 目录下新建一个 abc.txt 文件,t1 软链接到 abc.txt 文件就会正常。不会再有红色      提示。     2、可以对文件 或者 目录创建软链接,目录创建软链接和文件创建软链接流程一样。     3、删除软链接,不会影响它的指向文件。     vim t1:编辑 t1 软链接,输入1 t1 的内容保存退出。     删除 t1 软链接,tmp 目录下已没有软链接指向 abc.txt 文件。     此时,cat abc.txt 文件可以查看内容,也可以 vim abc.txt 增加 2 abc.txt 内容。证实了,删        除软链接,不会影响它的指向文件。     4、删除了指向文件,该软链接将变为无效连接。     当 t1 软链接指向实际文件 abc.txt 的时候,t1是可以对 abc.txt 进行增删改查 *** 作的。若 rm -      rf abc.txt 删除了实质性的 abc.txt 文件后,t1 将不能做任何 *** 作。失去了实质性文件而存在       的软链接等同于创建一个空的软链接效果一样。

linux下查看软连接的信息使用命令“ls -L”最后一列就是原始地址(实际指向的文件的位置)。ln -s /home/basic/dl/ build/执行完成后,会在build路径下dl的目录, 使用ls -l查看会发现build下的dl-〉/home/basic/dl,进入build/dl下即可查看与访问相应的文件。

在Linux命令行界面输入命令:ls -al;

带有“->”符号的则为软连接,initrd.img为软连接的文件名,而->后面跟着的boot/initrd.img-3.13.0-32-geberic则为软连接文件的真实路径。

参考资料

LINUX ln命令硬连接软连接详细解释.360doc个人图书馆[引用时间2017-12-29]

1. 先来了解一下Linux数据是如何保存和查询的

对 *** 作系统来说,数据分为两种:1. 用户数据 (user data) 2.元数据 (metadata)。用户数据就是保存和记录文件的内容。比如一个1M的ppt文件,500K的txt文件。这都属于用户数据。这个文件总有属性吧,比如大小、修改时间、访问时间、创建时间、存储的位置(文件所在的inode)、文件创建者等等信息。这些属性信息或者理解为汇总信息,我们称它为元数据。一句话,用户数据是文件的真实内容,而元数据则是汇总信息。

在 Linux 中,元数据中的 inode 号(inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。

2. 查看文件对应的inode号

134474678 latest.tar.gz

linux查看文件对应的inode号

可以看出latest.tar.gz这个文件, inode 号是134474678,Linux查找读写该文件时,以为个inode号码为标识,而不是文件名。文件名类似于网站域名,仅仅是方便人类记忆。

也就是说, inode134474678有一个硬链接,它就是latest.tar.gz。

3. 根据inode号查找对应的文件

那么,问题来了,系统上有没有第二个文件,它的inode号码也是13447467。

使用find查找一下:

查找结果如下:

/root/latest.tar.gz

/root/latest2.tar.gz

linux根据inode号查找对应的文件

硬盘上真的有第二个文件它的inode号码也是134474678,像这种情况,我们认为inode134474678有两个硬链接。当然,这是本文作者提前准备好的。

为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。

4. 确认硬链接的数量

查看一下文件latest.tar.gz

输出结果如下:

-rwxr-xr-x. 2 root root 8743850 Oct 11 15:00 latest.tar.gz

请留意输出的结果中的数字2,表示该文件存在2个硬链接。

正常情况下,一个inode只有一个链接,如下例

输出结果:

-rw-r--r--. 1 root root 9 Nov 21 11:39 abc.txt

请留意输出的结果中的数字1,表示该文件只存在1个硬链接,默认情况下,文件都是只有一个硬链接的。

5. 查看软链接

再来看一个文件

lrwxrwxrwx. 1 root root 15 Sep 26 15:57 /dev/stdout ->/proc/self/fd/1

linux查看软链接

我们发现,/dev/stdout实际上指向另一个文件/proc/self/fd/1,这就是软链接。类似于Windows系统上的快捷方式。

6. 软链接与硬链接的区别

6.1 软链接特点

6.2 硬链接特点

ln链接符原理如下:

Linux ln链接符原理图

7. 创建文件的链接

Linux ln命令是一个非常重要而且常用命令,它用于为文件或者目录创建链接。

7.1 创建软链接

创建一个文件,用于演示软链接。

创建软链接示例:

检查结果:

输出文件属性

lrwxrwxrwx. 1 root root 8 Nov 26 17:48 soft123.txt ->soft.txt

linux创建软链接

可以看出这个文件指向当前目录soft.txt,配置成功。7.2 创建硬链接

创建一个文件,用于演示硬链接。

创建硬链接,没有使用选项

检查结果:

输出文件属性:

-rw-r--r--. 2 root root 0 Nov 26 17:47 hard123.txt

linux创建硬链接

留意以上输出数字2,表明该文件有2个副本。

8. 总结

ln命令可以创建文件的副本,也可以创建软链接。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8676750.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-19
下一篇2023-04-19

发表评论

登录后才能评论

评论列表(0条)

    保存