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下的快捷方式。
- 只有删除了源文件和指向源文件的所有硬链接,文件才会真正的被删除。