ln:连接文件
在linux下面的连接文件有两种,一种是类似windows的快捷方式的软连接(symbolic link),可以让你快速连接到目标文件;另一种则是通过文件系统的inode连接来产生新文件名,而不是产生新文件,这种称为硬链接(hard link)。
hard link:
在某个目录下新建一条文件名连接到某inode号码的关联记录。
举个例子:
[root@www ~]# ln /etc/crontab .
[root@www ~]# ll -i /etc/crontab /root/crontab
1912701 -rw-r--r-- 2 root root 255 Jan 6 2007 /etc/crontab
1912701 -rw-r--r-- 2 root root 255 Jan 6 2007 /root/crontab
这两个你可通过任意一个去读取最终数据。这么做有什么好处呢?最大的好处就是“安全”;如果你将任何一个“文件名”删除,其实inode与block都还是存在的。此时你可以通过另一个“文件名”来读取正确的文件数据。此外,不论你使用哪个“文件名”来编辑,最终的结果都会写入到相同的inode与block中,因此均能进行数据的修改。
一般来说,使用hard link设置连接文件时,磁盘的空间与inode的数目都不会改变。hard link只是在某个目录下的block多谢如一个关连数据而已,既不会增加inode也不会消耗block数量。
但hard link是有限制的:
1、不能跨文件系统
2、不能连接目录
symbolic link
相对于hard link,symbolic link可就好理解多了,基本上,symbolic link就是在创建一个独立的文件,而这个会让数据的读取指向它连接的那个文件的文件名。由于只是利用文件来作为指向的操作,所以,当源文件被删除之后,symbolic link的文件会“开不了”,会一直说“无法打开某文件”。
示例:
[root@www ~]# ln -s /etc/crontab crontab2
[root@www ~]# ll -i /etc/crontab /root/crontab2
1912701 -rw-r--r-- 2 root root 255 Jan 6 2007 /etc/crontab
654687 lrwxrwxrwx 1 root root 12 Oct 22 13:58 /root/crontab2 ->/etc/crontab
#在连接文件的末尾会写上目标文件的“文件名”
特别留意,这个symbolic link 与 Windows的快捷方式可以划上等号,由symbolic link所创建的文件为一个独立的新的文件,所以会占用掉inode和block
三、ln的详细用法
命令格式:
ln [参数] 源文件 目标文件
参数:
-s:如果不加任何参数就进行连接,那就是hard link,至于 -s 就是symbolic link
-f:如果目标文件存在时,就主动将目标文件直接删除后再创建。
范例前面都有简单的示例,就不再举例了;
四、关于连接数量
当新建一个目录时,新的目录的连接数为2,而上层目录的连接数则会增加1,请看举例:
[root@www ~]# ls -ld /tmp
drwxrwxrwt 5 root root 4096 Oct 22 14:22 /tmp
[root@www ~]# mkdir /tmp/testing1
[root@www ~]# ls -ld /tmp
drwxrwxrwt 6 root root 4096 Oct 22 14:37 /tmp
[root@www ~]# ls -ld /tmp/testing1
drwxr-xr-x 2 root root 4096 Oct 22 14:37 /tmp/testing1