美文网首页
Linux命令学习之链接文件

Linux命令学习之链接文件

作者: 年少时难免轻狂Ho | 来源:发表于2018-10-19 16:42 被阅读0次

    链接文件是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
    

    说明:只能对处于同一存储媒体的文件创建硬链接,若想在不同存储媒体之间创建链接,只能创建符号链接。

    相关文章

      网友评论

          本文标题:Linux命令学习之链接文件

          本文链接:https://www.haomeiwen.com/subject/zlxuzftx.html