- 命令简介
- 命令用法
- 软硬两种链接的区别
- 补充
- 命令简介
- 命令名称:ln
- 命令英文原意:link
- 命令所在路径:/bin/ln
- 执行权限:所有用户
- 语法:ln -s [原文件][目标文件]
-s 创建软链接
原文件 想要生成链接文件的文件
目标文件 对原文件建立链接文件的文件名称
- 功能描述:生成链接文件
#范例 $ln -s /etc/issue /tmp/issue.soft
- 命令用法
- 软链接
[[email protected] ~]# ln -s /root/1.txt /testdir/1.test [[email protected] ~]# ll /testdir/ total 4 lrwxrwxrwx. 1 root root 11 Jul 31 19:26 1.test -> /root/1.txt -rw-r--r--. 1 root root 93 Jul 26 12:18 a.txt
- 硬链接
[[email protected] ~]# ln 1.text1 /testdir/1.test1 ln: creating hard link `/testdir/1.test1‘ => `1.text1‘: Invalid cross-device link #创建硬链接失败了。。。报错信息“Invalid cross-device link” [[email protected] ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda2 9948012 4403100 5032912 47% / tmpfs 502068 224 501844 1% /dev/shm /dev/sda1 40185208 81604 38055604 1% /boot /dev/sda3 9948012 23212 9412800 1% /testdir /dev/sr0 3824484 3824484 0 100% /media/CentOS6.8_Final #查看分区得知/testdir为一个独立的分区,得出结论硬链接不能跨分区 [[email protected] ~]# ln 1.text1 /tmp/1.text1 [[email protected] ~]# ll /tmp/ total 28 -rw-r--r--. 2 root root 0 Jul 31 19:30 1.text1
- 软硬两种链接的区别
- 链接文件信息分析
#硬链接 [[email protected] testdir]# ll /tmp/1.text1 -rw-r--r--. 2 root root 0 Jul 31 19:30 /tmp/1.text1 #软链接 [[email protected] testdir]# ll /testdir/1.test lrwxrwxrwx. 1 root root 11 Jul 31 19:26 /testdir/1.test -> /root/1.txt
文件类型+权限
a)文件类型部分(第一个字母)
“-” 表示文件;“d” 表示目录;“l” 表示软链接;
硬链接文件类型是文件“-”
软链接文件类型是链接文件符号“l”
b)权限部分
“r”--表示可读;“w”--表示可写;“x”--表示可执行
硬链接为管理员可读写其他人只有可读权限
软链接为所有人都是完全权限
- 文件大小分析
#源文件/etc/passwd [[email protected] opt]# ll -h /etc/passwd -rw-r--r--. 2 root root 1.7K Jul 26 17:56 /etc/passwd #链接文件 [[email protected] opt]# ll -h total 8.0K lrwxrwxrwx. 1 root root 11 Jul 31 19:59 passwd.1 -> /etc/passwd -rw-r--r--. 2 root root 1.7K Jul 26 17:56 passwd.2 #软链接文件大小只有11字节,看起来很小,而原文件有1.7k。事实上,哪怕原文件有上千个字节,它的 软链接也差不多还是只有这么大。因为软链接仅仅只是一个符号链接,用于在执行时链接指向原文件而 已,软链接类似Windows快捷方式,可供用户方便快捷的找到一些文件资料或可执行程序或文件文件,方 便规划和管理。只是一个很简单的链接指向,并不是代表真正的文件资料或可执行文件本身。对比硬链 接和原文件会发现,除了文件名所在目录不同之外,其他部分都是一模一样的,包括文件的大小。就类 似于执行了保持文件属性的拷贝(cp -p)一样,包括文件的修改时间都是一致的。
- 数据增加分析
#查看源文件内容 [[email protected] ~]# cat /etc/issue CentOS release 6.8 (Final) Kernel \r on an \m the telnet is \l the hostname is \h #查看软链接内容 [[email protected] ~]# cat /opt/issue.1 CentOS release 6.8 (Final) Kernel \r on an \m the telnet is \l the hostname is \h #查看硬链接内容 [[email protected] ~]# cat /opt/issue.2 CentOS release 6.8 (Final) Kernel \r on an \m the telnet is \l the hostname is \h #给源文件添加内容 [[email protected] ~]# vim /etc/issue [[email protected] ~]# cat /etc/issue CentOS release 6.8 (Final) Kernel \r on an \m the telnet is \l the hostname is \h hello word! #查看软链接文件内容 [[email protected] ~]# cat /opt/issue.1 CentOS release 6.8 (Final) Kernel \r on an \m the telnet is \l the hostname is \h hello word! 查看硬链接内容 [[email protected] ~]# cat /opt/issue.2 CentOS release 6.8 (Final) Kernel \r on an \m the telnet is \l the hostname is \h hello word! #从上面操作可以看到硬链接文件的内容随着原文件内容的更新而同步更新了,但是软链接的内容好像也 同样更新了,这是因为软链接本身就是一个链接指向而已,它所指向的文件内容就是原文件本身。由于 硬链接的同步更新机制,原文件内容都是会得到相应的更新的,所以在这里看到软链接的内容也有相应 的变化。
- 文件删除分析
由测试可以得出,删除原文件之后,软链接将找不到链接指向的文件了。同时软链接文件信息中软链接目录和所链接指向的原文件目录都会变成红色,并且文件目录会一直闪烁,访问找不到软链接文件。而硬链接的原文件就算丢失,硬链接文件也依然可以访问。
[[email protected] ~]# cd /opt/ [[email protected] opt]# ll total 4 lrwxrwxrwx. 1 root root 10 Jul 31 20:49 issue1 -> /etc/issue #软链接都会有箭头指向源文件的位置 [[email protected] opt]# ls -i /etc/issue ./issue1 ./issue2 135260 /etc/issue 427077 ./issue1 135260 ./issue2 [[email protected] opt]# #而硬链接与软链接的显著区别在于硬链接与源文件的节点号一样且没有箭头指向源文件
- 补充:
每一个Linux的文件都有一个i节点,由内核来进行调度和管理。但是在Linux系统中,一个文件一定会有一个i节点,而一个i节点不一定只对应一个文件,硬链接就是一个很特殊的案例,所以当其中一个文件删除后,另外一个文件依旧还可以存在。硬链接不能跨文件系统,也就是不能跨分区和设备。
时间: 2024-12-19 18:47:20