当我们登陆linux系统后,在使用ls –l命令列出目录下的文件时。有一些文件的显示格式是如下形式的:
lrwxrwxrwx. 1 root root 7 Jul 25 09:18 rc -> rc.d/rc
这是什么鬼,初次接触的话,会有种很奇怪的感觉,不知道这个文件为啥跟其它文件显示形式不一样。当我们对linux文件类型有所了解之后就会很容易明白这类文件就是所谓的软链接文件。
在linux系统中除了像上边显示的那样的软链接文,还有另外一种链接叫做硬连接。硬连接如同一个人有连个名字,无论叫哪个名字时,人的各种生理数据都不会发生改变。硬连接也是一样,它随源文件内容的增减而发生对应的内容更改。
软链接和硬连接的区别:
硬连接:
创建硬链接会增加额外的记录项以引用文件
对应于同一文件系统上的一个物理文件
每个文件引用相同的inode
创建时链接数递增
删除问价时:
rm命令递减计数的链接
文件要存在,至少一个链接数
当链接数为零时,该文件被删除
不能跨越驱动器或分区
语法:ln filename [linkname]
[[email protected] test]# ll total 8 drwxr-xr-x 2 root root 4096 Jul 31 17:56 . dr-xr-x---. 27 root root 4096 Jul 31 17:55 .. [[email protected] test]# touch hardlink.txt [[email protected] test]# ll total 8 drwxr-xr-x 2 root root 4096 Jul 31 17:56 . dr-xr-x---. 27 root root 4096 Jul 31 17:55 .. -rw-r--r-- 1 root root 0 Jul 31 17:56 hardlink.txt [[email protected] test]# ln hardlink.txt hardlink1.txt [[email protected] test]# echo "aaaaaa" > hardlink.txt [[email protected] test]# cat hardlink.txt aaaaaa [[email protected] test]# cat hardlink1.txt aaaaaa [[email protected] test]# rm hardlink rm: cannot remove `hardlink‘: No such file or directory [[email protected] test]# rm hardlink.txt rm: remove regular file `hardlink.txt‘? y [[email protected] test]# cat hardlink1.txt aaaaaa [[email protected] test]# [[email protected] test]# mkdir hardlink [[email protected] test]# ln hardlink hardlink2 ln: `hardlink‘: hard link not allowed for directory [[email protected] test]#
软链接:
一个符号链接指向另一个文件
ln –s会显示链接的名称和引用的文件
一个符号链接的内容是它引用文件的名称
目录也可以进行软链接
可以跨分区
指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增减或减少
目标文件inode的引用计数;
语法:ln -s filename [linkname]
[[email protected] test]# touch symbolic.txt [[email protected] test]# mkdir symbolic [[email protected] test]# cp -r /tmp/* symbolic [[email protected] test]# ln -s symbolic.txt symbolic1.txt [[email protected] test]# ln -s symbolic symbolic1 [[email protected] test]# ls -l total 4 drwxr-xr-x 10 root root 4096 Jul 31 18:01 symbolic lrwxrwxrwx 1 root root 8 Jul 31 18:03 symbolic1 -> symbolic lrwxrwxrwx 1 root root 12 Jul 31 18:01 symbolic1.txt -> symbolic.txt -rw-r--r-- 1 root root 0 Jul 31 18:00 symbolic.txt [[email protected] test]# rm -f symbolic.txt [[email protected] test]# ls -l total 4 drwxr-xr-x 10 root root 4096 Jul 31 18:01 symbolic lrwxrwxrwx 1 root root 8 Jul 31 18:03 symbolic1 -> symbolic lrwxrwxrwx 1 root root 12 Jul 31 18:01 symbolic1.txt -> symbolic.txt [[email protected] test]#
总结:从上边可以看出硬连接文件有两个限制:1.不允许给目录创建硬连接;2.只允许在同一个文件系统中的文件之间才能创建链接。而软链接没有上面两个限制,可以对目录进行链接,同时也可以跨越分区进行链接。硬连接源文件删除,链接文件仍然可以使用,软链接源文件删除,链接文件失效。相同点是,仅链接文件的删除,不会影响源文件的内容。