本文共 3569 字,大约阅读时间需要 11 分钟。
创建链接文件:
1 2 3 | ln target link_name //创建硬链接文件 ln -s target link_name //创建软链接文件 关键字:链接、文件 |
为了后面描述方便,我将原始文件称为目标文件,将新创建的文件称为链接文件
硬链接
特点1:
硬链接文件与目标文件指向的都是同一个文件,只是文件名称不一样
1 2 3 4 | [root@CentOS7 app] #ln f1 f1_link //我们为目标文件f1创建一个硬链接文件f1_link [root@CentOS7 app] #ll -i //这两个文件的inode号都是67,说明是一个文件,对应的名字不同而已 67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1 67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1_link //我们把f1或者f1_link删除其中任一个,此文件依然能够被访问。不同硬链接文件之间没有依赖关系 |
特点2:
创建硬链接文件,其元数据的链接数会增加
1 2 3 4 5 | [root@CentOS7 app] #ll -i 67 -rw-r--r--. 1 root root 7 Jul 20 09:29 f1 //未创建硬链接时,f1的链接数是1 [root@CentOS7 app] #ll -i //创建完硬链接后,链接数为2 67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1 67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1_link |
扩展:
文件的默认链接数都是1,但是目录的链接数默认都是2。这是为什么?
1 2 3 4 | [root@CentOS7 app] #ll -id dir1/ //在app目录下创建目录dir1,其链接数为2,就是说有两个名字指向了同一个目录文件dir1 67160800 drwxr-xr-x. 2 root root 6 Jul 20 09:41 dir1/ //第一个名字就是app目录下的dir1自身 [root@CentOS7 dir1] #ll -ai 067160800 drwxr-xr-x. 2 root root 6 Jul 20 09:41 . //第二个名字就是,进入dir1目录,其中的 .目录 |
特点3:
不能针对目录创建硬链接
1 2 | [root@CentOS7 app] #ln dir1 f2 ln: ‘dir1’: hard link not allowed for directory //硬链接不允许对目录创建 |
特点4:
不能跨分区创建硬链接
1 2 | [root@CentOS7 app] #ln f1 /root/f2_link ln: failed to create hard link ‘/root/f2_link’ => ‘f1’: Invalid cross-device link //app目录与/root在不同分区,不能跨分区创建硬链接 |
特点5:
硬链接文件与目标文件的文件类型是一样的,因为他们指向的是同一份文件,这份文件的元数据以及内容都是唯一且固定的
1 2 3 4 5 6 | [root@CentOS7 app] #ll -i 67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1 67 -rw-r--r--. 2 root root 7 Jul 20 09:29 f1_link //目标文件与链接文件的类型都是普通文件 [root@CentOS7 app] #ll -i /dev/zero /dev/zero_link 1030 crw-rw-rw-. 2 root root 1, 5 Jul 20 07:30 /dev/zero 1030 crw-rw-rw-. 2 root root 1, 5 Jul 20 07:30 /dev/zero_link //目标文件与链接文件都是字符文件类型 |
扩展:
在app下有个dir1目录,其绝对路径是/app/dir1,现在我们在dir1目录下创建硬链接文件f3_link,使其指向/app下的f1文件,要求使用相对路径
1 2 3 4 5 6 | [root@CentOS7 dir1] #pwd /app/dir1 //当前路径在dir1下 [root@CentOS7 dir1] #ln ../f1 f3_link //相对路径../f1,其中..表示dir1的父目录也就是/app [root@CentOS7 dir1] #ll -i /app/f1 f3_link //创建成功 67 -rw-r--r--. 3 root root 7 Jul 20 09:29 /app/f1 67 -rw-r--r--. 3 root root 7 Jul 20 09:29 f3_link |
软链接
特点1:
软链接文件和目标文件不是同一个文件,他们有各自的元数据
1 2 3 4 | [root@CentOS7 app] #ln -s f1 f4_link [root@CentOS7 app] #ll -i f1 f4_link //f1是目标文件,f4_link是软链接文件,二者的inode号都不一样,他们是两个不同文件 67 -rw-r--r--. 3 root root 7 Jul 20 09:29 f1 68 lrwxrwxrwx. 1 root root 2 Jul 20 10:13 f4_link -> f1 |
特点2:
创建软链接文件,其元数据的链接数是1,不会改变
1 2 3 4 5 6 | [root@CentOS7 app] #ln -s f1 f4_link [root@CentOS7 app] #ll drwxr-xr-x. 2 root root 21 Jul 20 10:07 dir1 -rw-r--r--. 3 root root 7 Jul 20 09:29 f1 -rw-r--r--. 3 root root 7 Jul 20 09:29 f1_link lrwxrwxrwx. 1 root root 2 Jul 20 10:13 f4_link -> f1 //链接数为1 |
特点3:
软链接文件与目标文件的类型不一样,软链接文件类型是l
1 2 3 4 5 | [root@CentOS7 app] #ll drwxr-xr-x. 2 root root 21 Jul 20 10:07 dir1 -rw-r--r--. 3 root root 7 Jul 20 09:29 f1 -rw-r--r--. 3 root root 7 Jul 20 09:29 f1_link lrwxrwxrwx. 1 root root 2 Jul 20 10:13 f4_link -> f1 |
特点4:
软链接可以针对目录创建
1 2 3 4 5 6 7 | [root@CentOS7 app]#ln -s dir1 f5_link [root@CentOS7 app]#ll drwxr-xr-x. 2 root root 21 Jul 20 10 : 07 dir1 -rw-r--r--. 3 root root 7 Jul 20 09 : 29 f1 -rw-r--r--. 3 root root 7 Jul 20 09 : 29 f1_link lrwxrwxrwx. 1 root root 2 Jul 20 10 : 13 f4_link -> f1 lrwxrwxrwx. 1 root root 4 Jul 20 10 : 22 f5_link -> dir1 //dir1是目录,f5_link软链接指向dir1 |
特点5:
软链接可以跨分区创建
可以跨分区创建软链接,但是链接的文件亮红说明有问题,下面说明
特点6:
上述的示例中出现软链接标红,是因为路径的问题。
以上述为例,在软链接中,目标文件的路径是相对于链接文件的目录的,而不是相对于本目录的。也就是说,dir1是目标文件,/root/f6_link是软链接文件,
要想使链接生效,dir1的路径需要修改为 ../app/f1
软链接一般都会使用相对路径,只要我们知道以下几点就会慢慢理解的:
目标文件是谁
软链接文件是谁
目标文件相对于软链接文件的路径
本文转自 a_pan 51CTO博客,原文链接:http://blog.51cto.com/panpangao/1949200
转载地址:http://etano.baihongyu.com/