前面介绍过硬链接与软链接的概念,在这里,在练习一下下它的内涵。
1、ln [-sf] 原文件 目标文件
参数:-s:如果ln不加任何参数就进行链接,那么就是硬链接,-s就是符号链接
-f:如果目标文件存在时,就主动将目标文件直接删除后再建立。
例一:将/etc/passwd复制到/tmp中,并且观察inode与块:
root@dum-ThinkPad-E425:/tmp# cd /tmp
root@dum-ThinkPad-E425:/tmp# cp -a /etc/passwd .
root@dum-ThinkPad-E425:/tmp# du -sb ; df -i .
71849 . (先注意一下这里的容量是多少)
文件系统 Inode 已用(I) 可用(I) 已用(I)%% 挂载点
/dev/sda1 1222992 350190 872802 29% /
利用du 与df检查当前的参数,du -sb是计算整个/tmp下面有多少字节容量。
例二:将/tmp/passwd创建硬链接成为passwd-hd文件
root@dum-ThinkPad-E425:/tmp# ln passwd passwd-hd
root@dum-ThinkPad-E425:/tmp# du -sb ; df -i .
71849 .
文件系统 Inode 已用(I) 可用(I) 已用(I)%% 挂载点
/dev/sda1 1222992 350190 872802 29% /
仔细看看,即使在/tmp中多了一个文件,整个inode与块的容量并没有改变。
root@dum-ThinkPad-E425:/tmp# ls -il passwd*
412307 -rw-r--r-- 2 root root 1642 2012-07-31 18:38 passwd
412307 -rw-r--r-- 2 root root 1642 2012-07-31 18:38 passwd-hd
看一下原来这两个文件是指向同一个inode,这个是重点,另外,第二兰的链接数也会增加。
fu hao lian jie
例三:将/tmp/passwd建立一个符号链接
root@dum-ThinkPad-E425:/tmp# ln -s passwd passwd-so
root@dum-ThinkPad-E425:/tmp# ls -il passwd*
412307 -rw-r--r-- 2 root root 1642 2012-07-31 18:38 passwd
412307 -rw-r--r-- 2 root root 1642 2012-07-31 18:38 passwd-hd
412308 lrwxrwxrwx 1 root root 6 2012-11-02 20:58 passwd-so -> passwd
仔细看,这个passwd-so指向的inode号不同了,这是一个新的文件,这个文件的内容是指向passwd的,可以看到这个文件的大小是6个字符,这个 链接文件的内容只是填写链接的目标文件文件名而已,所以,链接文件名(有时候含路径)有多长,文件就有多大。
root@dum-ThinkPad-E425:/tmp# du -sb ; df -i .
71855 .
文件系统 Inode 已用(I) 可用(I) 已用(I)%% 挂载点
/dev/sda1 1222992 350191 872801 29% /
整个容量与inode使用数都改变,确实如此。
例四:删除原文件passwd,其他的两个文件是否可以打开?
root@dum-ThinkPad-E425:/tmp# rm passwd
root@dum-ThinkPad-E425:/tmp# cat passwd-hd
............................显示正常
root@dum-ThinkPad-E425:/tmp# cat passwd-so
cat: passwd-so: 没有那个文件或目录
竟然无法正常打开这个文件。
注意使用ln如果不用任何参数的话,就是硬链接,如上面的情况,增加了硬链接之后,可以发现使用ls -l时,显示的链接那一兰属性增加了,这个时候如果去掉passwd,passwd-hd的内容还是跟原来一样,但是passwd-so就会找不到该文件。
如果ln -s,所创建的就类似windows的快捷方式(符号链接,较常用)。当修改Linux下的链接文件时,更改的其实就是原始文件,所以,不论原始文件链接到哪里,只要修改了链接文件,原始文件就跟着变,以上面为例,由于使用-s参数建立一个名为passwd-so的文件,则修改passwd-so时,其内容与passwd完全相同,并且,当存储之后,被改变的将是passwd文件。
阅读(2779) | 评论(0) | 转发(1) |