链接文件是Linux文件系统的一个优势,如果要在系统上维护同一文件的两份或者多份,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理副本和多个虚拟副本的方法,这种方法称为链接。链接是目录中只想文件真是位置的占位符,Linux系统种有一下两种不同类型的文件链接。
符号链接
符号链接就是一个实实在在的文件,它只想存放在虚拟目结构种某一个地方的另外一个文件。
[ocetl@yxdmgr61 linkdemo]$ ll
总用量 4
-rw-r--r--. 1 ocetl ngboos 7 10月 19 16:07 a.txt
[ocetl@yxdmgr61 linkdemo]$ ln -s a.txt sl_a.txt
[ocetl@yxdmgr61 linkdemo]$ ll
总用量 4
-rw-r--r--. 1 ocetl ngboos 7 10月 19 16:07 a.txt
lrwxrwxrwx. 1 ocetl ngboos 5 10月 19 16:07 sl_a.txt -> a.txt
需要注意的是
- 符号链接的名字ls_a.txt 位于ln 命令的第二个参数的位置上,在列表种,符号文件->文件名表示该符号文件是连接到a.txt上的一个符号链接。
- 符号链接的文件大小与数据文件大小并不一致,符号链接仅仅是指向a.txt的文件而已,他们的内容并不相同,是两个完全不同的文件。
- 另一个能说明符号链接是独立文件的方法就是查看inode编号,文件或者目录的inode编号是一个标识的唯一数字,这是数字又内核分配给文件系统种的每一个对象,想要查看文件或目录的inode编号,可以使用ls -i 命令
[ocetl@yxdmgr61 linkdemo]$ ls -i
1612425946 a.txt 1616649528 sl_a.txt
不难发现a.txt 的inode编号为1612425946,sl_a.txt的inode编号为1616649528,说明a.txt与ls_a.txt是完全不同的文件。
硬链接
硬链接会创建独立的虚拟文件,其中包含源文件的信息及位置。但从根本上而言,他们是同一个文件,引用硬链接文件就等同于引用原文件。
[ocetl@yxdmgr61 linkdemo]$ ll
总用量 4
-rw-r--r--. 1 ocetl ngboos 7 10月 19 16:07 a.txt
lrwxrwxrwx. 1 ocetl ngboos 5 10月 19 16:07 sl_a.txt -> a.txt
[ocetl@yxdmgr61 linkdemo]$ ln a.txt hl_a.txt
[ocetl@yxdmgr61 linkdemo]$ ll
总用量 8
-rw-r--r--. 2 ocetl ngboos 7 10月 19 16:07 a.txt
-rw-r--r--. 2 ocetl ngboos 7 10月 19 16:07 hl_a.txt
lrwxrwxrwx. 1 ocetl ngboos 5 10月 19 16:07 sl_a.txt -> a.txt
我们可以看到硬链接文件共享inode编号,以及同样的文件大小,因为他们终归是同一个文件。
[ocetl@yxdmgr61 linkdemo]$ ll -i
总用量 8
1612425946 -rw-r--r--. 2 ocetl ngboos 7 10月 19 16:07 a.txt
1612425946 -rw-r--r--. 2 ocetl ngboos 7 10月 19 16:07 hl_a.txt
1616649528 lrwxrwxrwx. 1 ocetl ngboos 5 10月 19 16:07 sl_a.txt -> a.txt
说明:只能对处于同一存储媒体的文件创建硬链接,若想在不同存储媒体之间创建链接,只能创建符号链接。
网友评论