ln 命令用法 hard link 与 symbolic link 区别 分析

    Hard Link (实体链接, 硬式连接)

    首先要知道inode。它就像一个指向档案的指针,档案的内容由inode的记录来指向。所以读取一个档案内容可以有多个文件名对应一个文件的inode号码,这就是hard link。

   举个例子来说,假如我系统有个 /root/crontab 他是 /etc/crontab 的实体链接,也就是说这两个文件名连结到同一个 inode , 自然这两个文件名的所有相关信息都会一模一样(除了文件名之外)。实际的情况可以如下所示:


[root@localhost fsy]# ln /etc/crontab . <==建立实体链接的命令,第一个参数为原连接的地方,第二个参数为创建连接的地方。
[root@localhost fsy]# ll -i /etc/crontab /root/crontab
45949 -rw-r--r--. 2 root root 451  2月  8 2011 /etc/crontab
45949 -rw-r--r--. 2 root root 451  2月  8 2011 /root/crontab

    可以发现两个文件名都连结到 45949 这个 inode 号码。 因为这两个文件名其实指向的是同一个地址。第二个字段由1变为2了。这个字段称为“连结”,即有多少个文件名连接到这个inode上,有多少个文件指针指向这个存储地址。所以将任何文件名删除,inode与block都还是存在的。一般说来,使用hard link设定链接文件时,磁盘的空间与inode的数目都不会改变。hard link 不能跨Filesystem,也不能link目录。

  Symbolic Link (符号链接,亦即是快捷方式)

  相对于 hard link , Symbolic link 可就好理解多了,基本上, Symbolic link 就是在建立一个独立的文件,而这个文件会让数据的读取指向它link的文件名。由于只是用来作指向,所以当来源文件被删除后,symbolic link 的文件就会打不开了。可以理解为它是一个指向文件地址指针的指针。当它指向的指针没有了,自然也就不能用了。

范例一:将 /etc/passwd 复制到 /tmp 底下,并观察 inode 与 block
[root@www ~]# cd /tmp
[root@www tmp]# cp -a /etc/passwd .
[root@www tmp]# du -sb ; df -i .
18340 . <==先注意一下这里的容量是多少!
Filesystem    Inodes    IUsed    IFree    IUse%  Mounted on
/dev/hdc2    2560864 149738 2411126    6% /

# 利用 du 不 df 来检查一下目前的参数 du -sb 计算整个 /tmp 底下有多少 bytes 的容量


范例二:将 /tmp/passwd 制作 hard link 成为 passwd-hd 档案,并观察档案容量
[root@www tmp]# ln passwd passwd-hd
[root@www tmp]# du -sb ; df -i .
18340 .
Filesystem   Inodes IUsed IFree IUse% Mounted on
/dev/hdc2    2560864 149738 2411126    6% /
# 仔细看,即使多了一个档案在 /tmp 底下,整个 inode 与 block 的容量并没有改变!
[root@www tmp]# ls -il passwd*
586361 -rw-r--r-- 2 root root 1945 Sep 29 02:21 passwd
586361 -rw-r--r-- 2 root root 1945 Sep 29 02:21 passwd-hd

# 指向同一个 inode。另外,那个第二个的连结数也会增加


范例三:将 /tmp/passwd 建立一个符号链接
[root@www tmp]# ln -s passwd passwd-so
[root@www tmp]# ls -li passwd*
586361 -rw-r--r-- 2 root root 1945 Sep 29 02:21 passwd
586361 -rw-r--r-- 2 root root 1945 Sep 29 02:21 passwd-hd
586401 lrwxrwxrwx 1 root root 6 Oct 22 14:18 passwd-so -> passwd
# passwd-so 指向的 inode number 不同了!这是一个新的档案~这个档案的内容是指向
# passwd 的。passwd-so 的大小是 6bytes ,因为 passwd 共有六个字符
[root@www tmp]# du -sb ; df -i .
18346 .
Filesystem  Inodes    IUsed  IFree  IUse%  Mounted on
/dev/hdc2   2560864 149739 2411125   6% /

# 整个容量与 inode 使用数都改变了


范例四:删除源文件 passwd ,其他两个档案是否能够开启?
[root@www tmp]# rm passwd
[root@www tmp]# cat passwd-hd
......正常显示完毕!
[root@www tmp]# cat passwd-so
cat: passwd-so: No such file or directory
[root@www tmp]# ll passwd*
-rw-r--r-- 1 root root 1945 Sep 29 02:21 passwd-hd
lrwxrwxrwx 1 root root
6 Oct 22 14:18 passwd-so -> passwd
# 符号链接无法开启。另外,如果符号链接的目标档案不存在,是会有特殊颜色的





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值