Linux的链接

Linux 的链接

2017/6/21 18:31:59 seventeenWen


Linux文件的链接概念

在Linux中有两种链接,一种叫做硬链接(Hard link),一种叫做软链接或者符号链接(Symbolic Link or Soft Link)。ln命令就是在两个文件中创建链接,在默认不带参数下,创建的是硬链接。
ln -s创建的是软链接

硬链接创建方式

ln 【源文件】 【目标文件】 -------->创建的是硬链接

软链接创建方式

ln -s  【源文件】 【目标文件】 ---------->创建的是软链接

硬链接

硬链接是通过索引节点(inode)链接的,在Linux的(ext2,ext3,ext4)中,保存在磁盘上的文件都会被分配一个索引节点号(inode)。
在Linux中,多个文件名指向同一个索引节点(inode)的情况是正常的,这种情况的文件就是硬链接。硬链接的作用之一就是允许一个文件拥有多个有效路径,用户建立硬链接到重要文件,可以防止误删。

Linux下文件的删除原理

ext文件系统的原理是,只要文件的inode上有一个以上的硬链接,只删除其中的一个硬链接(只删除了指向文件的链接)并不影响索引节点和文件本身和其他硬链接,就是存放数据的文件并未删除,只有当文件的最后一个链接被删除后,如果磁盘有新数据要存储到硬盘上,被删除文件的数据块才会释放空间,新空间被新数据覆盖。此时,原数据才会正真被删除。

删除静态文件(没有进程调用)的条件就是,删除所有与文件相关的硬链接文件。

硬链接小结

  • 具有相同inode号的文件互为硬链接
  • 删除硬链接或删除源文件之一,源文件本身并未删除
  • 只有删除源文件和对应的所有硬链接文件,文件实体才会被删除
  • 硬链接文件是文件的另一个入口
  • 通过硬链接可以防止重要文件被误删
  • ln 源文件 硬链接文件 创建硬链接文件
  • 硬链接文件可以用rm 删除
  • 对于没有被进程占用的文件来讲,硬链接的数变为0,文件就被删除

软链接

Linux中软链接(Soft link)也称为符号链接(Symbolic Link)。类似与windows中的快捷方式.Linux的软链接文件是一种特殊的文件,文件类型是l,在软链接文件中存放着指向另一源文件的位置和信息内容。因此,通过软链接文件能够快速的定位到源文件。

可以通过readlink命令读取软链接文件的内容

[root@seven a]# ls -l
total 12
-rw-r--r-- 2 root root 2 Jun 21 19:10 a
-rw-r--r-- 2 root root 2 Jun 21 19:10 b
-rw-r--r-- 1 root root 2 Jun 21 20:16 c
lrwxrwxrwx 2 root root 1 Jun 21 20:16 d -> c
lrwxrwxrwx 2 root root 1 Jun 21 20:16 e -> c
[root@seven a]# cat e
c
[root@seven a]# readlink d
c

软链接总结

  • 软链接类似windows的快捷方式(readlink可以查看指向)
  • 软链接是一个类似文本的文件,存放指向源文件的地址
  • 删除源文件,软链接文件依旧存在。但是无法指向源文件了
  • 失效时候,白底红字闪烁提示
  • 软链接文件和源文件是不同的文件,因为inode号不同
  • 删除软链接可以用rm命令删除‘’

删除对文件的软链接、硬链接和源文件的影响

模拟环境

  • 源文件fileA.txt
  • 硬链接文件file_hard
  • 软链接文件file_soft

  • 删除软链接

对硬链接和源文件没有任何影响

  • 删除硬链接


对软链接和源文件没有任何影响

  • 删除源文件

对硬链接没有影响,软链接失效。

对目录的链接链接总结

  • 目录不可以创建硬链接,但可以创建软链接

    [root@seven a]# ln dirD dir_Hard
    ln: `dirD': hard link not allowed for directory
    
  • 每个目录下都有一个硬链接’.

    [root@seven a]# ls -liad /test/demo/a /test/demo/a/.
    151454 drwxr-xr-x 3 root root 4096 Jun 22 07:20 /test/demo/a
    151454 drwxr-xr-x 3 root root 4096 Jun 22 07:20 /test/demo/a/.
    
  • 每个目录下都有一个对应上级目录的‘..’

    [root@seven a]# ls -liad /test/demo/.. /test /test/.
    140176 drwxr-xr-x 4 root root 4096 Jun 20 16:08 /test
    140176 drwxr-xr-x 4 root root 4096 Jun 20 16:08 /test/.
    140176 drwxr-xr-x 4 root root 4096 Jun 20 16:08 /test/demo/..
    

总结:软链接和硬链接的区别?

  • ln命令不带参数时创建的是硬链接,-s创建软链接
  • 删除软链接和硬链接都对文件没有影响。
  • ln不能对目录创建硬链接
  • 软链接可以跨文件系统,硬链接不可以跨文件系统
  • 硬链接和源文件具有相同的inode号。
  • 软链接和源文件具有不同的inode号。可以看做是windows下的快捷方式。
  • 只有删除了源文件和指向源文件的所有硬链接,文件才会真正的被删除。

你可能感兴趣的:(linux基础)