一天一linux命令(11) ln 链接文件

来源:互联网 发布:华悦网络加速器怎么样 编辑:程序博客网 时间:2024/06/05 07:08

ln

语法: ln [-s] [源文件] [目标文件] 

说明:建立符号链接或硬链接。

参数:

-s :提供符号链接。默认是硬链接。

范例:

0. 原始信息:

$ ll 
-rw-r--r-- 1 root root 13476 Jun 26 11:31 passwd 
1. 硬链接信息:
$  ln passwd passwd-hard 
$  ll 
total 32 
-rw-r--r-- 2 root root 13476 Jun 26 11:31 passwd 
-rw-r--r-- 2 root root 13476 Jun 26 11:31 passwd-hard 
注意看,上面那个数字变成2,这就表明占用了inodes。
2. 符号链接信息:
$ ln -s passwd passwd-soft 
$ ll 

-rw-r--r-- 2 root root 13476 Jun 26 11:31 passwd 
-rw-r--r-- 2 root root 13476 Jun 26 11:31 passwd-hard 
lrwxrwxrwx 1 root root 6 Jun 26 11:37 passwd-sofe -> passwd 
注意,passwd-soft会指向另一个文件,而且,最前面属性显示为l,此外,它是一个独立文件。
先删除passwd,然后我们使用more查看一下内容。
3. 使用more:
$ rm passwd 
rm: remove regular file `passwd'? y 
$ more passwd-hard 
………(正常显示) 
$ more passwd-soft 
passwd-soft: No such file or directory


名词解析:

Block

  它是磁盘可以记录的最小单位,是由数个扇区组成,所以大小通常为n*512bytes,例如4K。
inode.

   Block是记录文件内容数据的区域,inode则是记录该文件的属性及其放置在哪个Block之内的信息。所以,每个文件都会占用一个inode。当Linux系统要查找某个文件时,它会先搜寻inode table找到这个文件的属性及数据放置地点,然后再查找数据存放的Block进而将数据取出。inode数量在一开始已被设定好,其设定方式通常是“硬盘大小/ 一个容量”,这个容量比Block大一些较佳,例如刚才将Block设为4K,那么这个容量
可以设为8K左右。所以,一块1GB的硬盘如果以8K大小划分它的inode数,则会有131072个inode。一个inode的大小为128bytes,这样,我们就可以清楚地知道,一个分区被格式化为一个文件系统之后,基本上它一定会有inode table与数据区域两大块,一个用来记录文件的属性信息与该文件放置的Block块,一个用来记录文件的内容。

硬链接 
   刚才说过,当系统要读取某个文件时,它会先读inode table,然后根据inode的信息到数据区域将数据取出备用。硬链接就是再建立一个inode链接到文件放置的Block块。也就是
说,进行硬链接时,实际上您的文件内容不会改变,只是在查询时,利用原来的inode与后来添加的inode均可指定到该文件放置的地点,因此,读取两个inode的结果都是存取同一个文件的内容。不过,这样一来就有个问题,因为inode会链接到Block块,而“目录”本身仅消耗inode,这样,硬链接就不能链接目录。所以,硬链接有两个最大的限制:
1. 不能跨文件系统,因为不同的文件系统有不同的inode table;
2. 不能链接目录。
符号链接
   相对于硬链接,符号链接比较好理解,基本上,它是再建立一个独立文件,而这个文件会让数据读取操作指向它链接的那个文件。由于只是利用文件作为指向的动作,所以,
当源文件被删除,符号链接的文件就打不开了,屏幕会显示“无法开启某文件”。因此,硬链接比较安全,因为即使某一个inode被删除,只要还有一个inode,该文件就能被找到。

原创粉丝点击