首页 > 代码库 > linux——文件连接

linux——文件连接

  Linux所使用的文件系统是一种基于inode的文件系统。每一个新创建的文件都会被分配一个inode,且每一个文件都有唯一的inode编号。可以把inode简易的理解成为指针,它记录了文件在磁盘上的物理位置,并保存文件的属性。系统通过inode定位文件,而不是文件名,为了提高文件系统的效率,访问过的文件的inode会被缓存在内存中。Linux允许一个文件有多个文件名,文件名只是相当于对inode的一次引用,“连接数”就是inode的引用计数。
  普通情况下,文件的连接数为1,即只有一个名字。当建立文件连接的时候,就会有多个名字。文件链接分为软连接和硬连接。软连接又被称为“符号链接”,并不是真正的连接,与windows中的快捷方式类似,建立连接的命令是ln,建立软连接需要增加“-s”选项,如:
  $ ln -s /bin/bash sh
  会创建一个新的软连接指向/bin/bash。软连接的文件属性和目标文件的属性完全不同,它是一个新文件,也要占用一个inode,并且不影响目标文件的inode引用计数。    
  不使用“-s”选项创建的就是硬连接。硬连接的文件属性和目标文件完全相同。因为引用的同一个inode,仅仅将inode的引用计数进行了+1操作。
  Note:
  1.删除文件连接的目标文件,软连接会失效,硬连接只是"连接数“-1。
  2.软连接可以创建在任何位置,包括网络,硬连接则不行,目标文件必须和硬连接在同一个磁盘分区内(因为硬连接和目标文件引用同一个inode,若不在同一个磁盘分区内,则无法定位文件位置;软连接并没有引用目标文件的inode)。
  3.软硬连接在使用时区别不大,都相当于是一个文件具有不同的文件名和路径名。
  总结:
  软连接和windows的快捷方式是一样的东西,但比windows的快捷方式更加先进;
  硬连接能让同一个文件拥有不同的路径,还能防止恶意删除。

linux——文件连接