硬链接(hard link):
A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。
软链接(soft link):
A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。
linux中硬链接的特点:
- 具有相同inode节点号的多个文件互为硬链接文件;
- 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除;
- 只有删除了源文件和所有对应的硬链接文件,文件实体才会被删除;
- 硬链接文件是文件的另一个入口;
- 可以通过给文件设置硬链接文件来防止重要文件被误删;
- 可以通过ls -i看到Index;
- 硬链接文件是普通文件,可以用rm删除;
- 对于静态文件(没有进程正在调用),当硬链接数为0时文件就被删除。注意:如果有进程正在调用,则无法删除或者即使文件名被删除但空间不会释放。
linux中软链接的特点:
- 软链接类似windows系统的快捷方式;
- 软链接里面存放的是源文件的路径,指向源文件;
- 删除源文件,软链接依然存在,但无法访问源文件内容;
- 软链接失效时一般是白字红底闪烁;
- 创建软链接命令 ln -s 源文件 软链接文件;
- 软链接和源文件是不同的文件,文件类型也不同,inode号也不同;
- 软链接的文件类型是“l”,可以用rm删除。
硬链接实例
首先创建名字为test1的文件,内容为1234567890,如下:
[root@localhost test]# more test1 1234567890 [root@localhost test]#
创建硬连接命令格式:
ln 源文件 链接名
创建1个硬链接名字为test2
[root@localhost test]# ln test1 test2
使用ls -l命令查看这2个文件可以看到大小权限是完全一样的
[root@localhost test]# ls -l total 8 -rw-r--r-- 2 root root 11 Jul 2 10:24 test1 -rw-r--r-- 2 root root 11 Jul 2 10:24 test2
内容也完全一样
[root@localhost test]# more test1 1234567890 [root@localhost test]# more test2 1234567890
给test1增加一行123(test2不做修改),再次查看test1和test2里面的内容,发现test2也多了一行
[root@localhost test]# more test1 1234567890 123 [root@localhost test]# more test2 1234567890 123
这次再给test2增加一行tomato(test1不做修改),再次查看test1和test2里面的内容,发现test1也多了一行
[root@localhost test]# more test2 1234567890 123 tomato [root@localhost test]# more test1 1234567890 123 tomato
可以证明硬链接是文件名不同,但是是同一个文件,使用ls -il查看index
[root@localhost test]# ls -il total 8 102532464 -rw-r--r-- 2 root root 22 Jul 2 10:38 test1 102532464 -rw-r--r-- 2 root root 22 Jul 2 10:38 test2 [root@localhost test]#
102532464这个数字就是index,权限后面的2就是硬链接的个数,当你再次增加一个硬链接test3时,权限后面的2就会变成3,如下
[root@localhost test]# ln test1 test3 [root@localhost test]# ls -il total 12 102532464 -rw-r--r-- 3 root root 22 Jul 2 10:38 test1 102532464 -rw-r--r-- 3 root root 22 Jul 2 10:38 test2 102532464 -rw-r--r-- 3 root root 22 Jul 2 10:38 test3 [root@localhost test]#
如果你使用命令删除test3则会减1,硬链接个数变为2,注意:你删除的仅仅是个文件名,文件还在,当硬链接个数为0时,文件就会被删除,只要有1个硬链接个数,文件就不会被删除。
删除硬链接
删除硬链接跟普通删除一个文件一样,直接使用rm 文件名 即可
[root@localhost test]# rm test3
软链接实例
软链接就比较简单了,在windows中叫快捷方式,在linux中叫软链接。
创建软连接命令格式
ln -s 源文件或目录 目标文件或目录
例如:
当前路径创建test 引向/var/www/test 文件夹
ln –s /var/www/test test
创建/var/test 引向/var/www/test 文件夹
ln –s /var/www/test /var/test
删除软链接
和删除普通的文件是一眼的,删除都是使用rm来进行操作
rm –rf 软链接名称(请注意不要在后面加”/”,rm –rf 后面加不加”/” 的区别,可自行去百度下啊)
例如:
删除test
rm –rf test
修改软链接
ln –snf 新的源文件或目录 目标文件或目录
这将会修改原有的链接地址为新的地址
例如:
创建一个软链接
ln –s /var/www/test /var/test
修改指向的新路径
ln –snf /var/www/test1 /var/test