linux 中软硬链接文件

来源:互联网 发布:samba端口 编辑:程序博客网 时间:2024/04/25 14:30

1.首先,先来理解什么是inode

inode(索引节点):每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘 ... ... )被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。

做个比喻,比如一本书,存储设备或分区就相当于这本书,Block相当于书中的每一页,inode 就相当于这本书前面的目录,一本书有很多的内容,如果想查找某部份的内容,我们可以先查目录,通过目录能最快的找到我们想要看的内容。虽然不太恰当,但还是比较形象。

2.创建硬链接文件的语法

ln   源文件   目标文件

[longfei@localhost ~]$ vi testhard 创建一个新的文件

[longfei@localhost ~]$ ls -il testhard 显示文件的详细信息,包括inode

1933557 -rw-rw-r-- longfei longfei 19 Nov  03:59 testhard

[longfei@localhost ~]$ ln testhard testh 为文件testhard创建硬链接文件testh

[longfei@localhost ~]$ cat testhard testh 查看两个文件中的内容,发现内容一样

test for hard file

test for hard file

[longfei@localhost ~]$ ls -il testhard testh 显示两个文件的详细信息,发现信息完全一样

1933557 -rw-rw-r-- longfei longfei 19 Nov  03:59 testh

1933557 -rw-rw-r-- longfei longfei 19 Nov  03:59 testhard

[longfei@localhost ~]$ vi testh 修改其中一个文件的内容,其它文件也将受到影响.

[longfei@localhost ~]$ cat testhard testh

ddd

test for hard file

ddd

test for hard file

:硬链接文件不能为目录创建,只能为文件创建

3.创建软链接文件的语法

#ln  -s 源文件或目录 目标文件或者目录

[longfei@localhost ~]$ ln -s testhard testss testhard创建一个软链接文件 

[longfei@localhost ~]$ ls -il testhard testss 

1933557 -rw-rw-r-- longfei longfei 23 Nov  04:01 testhard

1933488 lrwxrwxrwx longfei longfei  Nov  04:08 testss -> testhard  testss指向testhard

[longfei@localhost ~]$ cat testss  查看testss相当于打开testhard

ddd

test for hard file

[longfei@localhost ~]$ rm -r testhard

[longfei@localhost ~]$ cat testss

cat: testss: No such file or directory

:硬链接文件可以为文件或者目录创建

 

总结:

1)硬链接文件要在同一个文件系统中,软链接文件可以跨过文件系统

2)硬链接文件不管有多少个,都指向同一个inode.只要有一个硬链接文件存在,该文件就存在,类似拷贝了那个文件,但又跟一个文件的拷贝有点区别,就是只要其中一个硬链接文件被修改了,其它文件同时都会自动更新

3)软链接不直接使用i节点作为文件指针,而是使用文件路径名作为指针.所以删除链接文件对源文件毫无影响,但是删除了源文件,链接文件就找不到所指向的文件.

4)软链接文件有自己的inode,并在磁盘上有一小片空间存放路径名

5)软连接文件可以对一个不存在的文件名进行链接,只是打开的时候找不到源文件罢了

6)硬链接不可以对目录进行链接,只能针对文件;软链接却可以对目录或文件进行链接.

0 0
原创粉丝点击