(转)硬链接和软链接

软链接和硬链接

2010年9月20日 由 edsionte 留言 ?

硬链接类似与一个指向文件的指针(但是与文件描述符不同),比如我们通过下面命令:

view source print ?
1 edsionte@edsionte-laptop:~$ touch file1
2 edsionte@edsionte-laptop:~$ ln file1 file1hdlink
3 edsionte@edsionte-laptop:~$ ls -l file1 file1hdlink
4 -rw-r--r-- 2 edsionte edsionte 0 2010-09-20 22:56 file1
5 -rw-r--r-- 2 edsionte edsionte 0 2010-09-20 22:56 file1hdlink
6 edsionte@edsionte-laptop:~$ rm file1
7 edsionte@edsionte-laptop:~$ ls -l file1hdlink
8 -rw-r--r-- 1 edsionte edsionte 0 2010-09-20 22:56 file1hdlink

通过ln命令我们为file1文件创建了一个硬链接file1hdlink。通过ls -li 命令我们也可以发现,这两个文件的索引节点,属性以及大小均均是相同的,因此我们可以得出这样的结论:file1和file1hdlink同时指向一个文 件(类似指针),它们只是同一个文件的两个不同名字而已。此时也就没有file1是源文件,而file1hdlink是硬链接这样的概念了,两者的地位相 同。当我们删除其中一个文件时,就会发现连接数减少了一个。当某个文件的链接数为0时,这个文件便会被删除。

软链接也叫符号链接(symbol link),它相当于windows下快捷方式。与硬链接不同的是,软链接本身就是一类文件(链接文件),因此软链接本身的索引结点和其链接的文件的索引结点是不同的。比如通过下面的命令:

view source print ?
1 edsionte@edsionte-laptop:~$ ln -s file2 file2symlink
2 edsionte@edsionte-laptop:~$ ls -li file2 file2symlink
3 51217 -rw-r--r-- 1 edsionte edsionte 7 2010-09-20 23:18 file2
4 51214 lrwxrwxrwx 1 edsionte edsionte 5 2010-09-20 23:17 file2symlink -> file2
5 edsionte@edsionte-laptop:~$ cat file2symlink
6 hello!
7 edsionte@edsionte-laptop:~$ rm file2
8 edsionte@edsionte-laptop:~$ cat file2symlink
9 cat: file2symlink: 没有那个文件或目录

这里我们也可以发现file2的链接数为1。这里的两个文件并不是平等的关系,从文件属性也可以发现file2是普通文 件,file2symlink是一个链接文件。每次系统访问软连接文件时,就会自动去访问它所链接的那个源文件。当源文件本身被删除后,这个链接文件也就 失效了,尽管它还存在,但是已经不能访问到源文件了。

你可能感兴趣的:((转)硬链接和软链接)