连接文件ln
---雨竹清风
连接文件分为两种,一种是类似于windows中的快捷方式的功能,一种是通过文件系统中的inode连接产生新文件名,而不是产生新文件,这种成为硬连接。
硬连接:
每一个文件都会占用一个inode,文件的内容是由inode的记录来指向。
想要读取该文件,必须要经过目录记录的文件名来指到正确的inode号码才能读取。
文件名只与目录有关,但是文件内容则与inode有关。hard link只是在某个目录下新建一条文件名连接到某inode号码的关联的记录而已。
例子:创建一个实际连接的文件,图解如下。
ln /etc/crontab .
硬连接应该仅能在单一文件系统中进行的,应该是不能够跨文件系统。
所以hard link 是有限制的:
不能连接到目录(暂时不支持);不能跨文件系统。
软连接:
创建一个独立文件,而这个文件会让数据的读取指向它连接的那个文件的文件名。由于只是利用文件来做为指向的操作,所以当源文件删除后,软连接便找不到源文件了。
ln –s /etc/crontab crontab2
图解如下:
从图可得只要目标文件/etc/crontab删除后,便找不到文件的实际内容,也就得不到文件的内容了。
例子:
1. 将/etc/passwd 复制到/tmp下面,并且查看inode与block。
使用命令cd /tmp
cp –a /etc/passwd .
du –sb; df –i .
2. 将/tmp/passwd制作hard link成为passwd-hd文件,并查看文件与容量
3. 列出所有的passwd的文件
ls –il passwd*
4. 将/tmp/passwd制作符号连接成为passwd-os文件,并查看文件与容量
ln –s passwd passwd-os
查看同上。
磁盘所占的空间比上次未创建之前多了6byte。
5.删除软连接和硬连接
命令都为rm。