linux之软连接 硬链接 link ln
参考链接:https://blog.csdn.net/qq_39498080/article/details/80048247
创建软连接,命令为:ln [选项] 源文件 目标文件 即把源文件连接到目标文件上
软链接和硬链接的区别:
- 软链接就是:“ln –s 源文件 目标文件”,只会在选定的位置上生成一个文件的镜像,不会占用磁盘空间,类似与windows的快捷方式。
- 硬链接ln 源文件 目标文件,没有参数-s, 会在选定的位置上生成一个和源文件大小相同的文件。
无论是软链接还是硬链接,文件都保持同步变化。
硬链接特征 | 软链接特征 |
1) 硬链接文件跟源文件拥有相同的i(inode)节点和存储block块,它们可以看作是同一个文件。 |
1) 软链接文件作用跟windows系统的快捷方式作用相同。 2) 软链接拥有自己的i节点和存储block块, 但是此数据块中保存的信息是源文件的i节点和文件名信息,并不会保存实际的文件数据内容。 3) 用"ll"命令查看时,软链接文件前面都是"lrwxrwxrwx", 其中第一位的字母"l"即表示此文件为软链接文件,软链接文件的真实权限取决于源文件的权限。 4) 修改任意一个文件,另外一个文件的内容都会改变。 5) 当源文件被删除时,软链接文件将不能使用。 |
扩展资料
软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。
链接文件甚至可以链接不存在的文件,这就产生一般称之为”断链”的现象,链接文件甚至可以循环链接自己。类似于编程语言中的递归。
软链接文件只是其源文件的一个标记,当删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但却不能查看软链接文件的内容了。
用ln -s 命令可以生成一个软连接,如下:ln -s source_file softlink_file
在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。
删除硬/软链接用rm softlink_file 或者unlink softlink_file
实际操作:
前提:蓝色是命令,红色是报错信息,绿色是正常输出
命令 | 结果 | 说明 |
显示准备的数据 ll fw_result fw_result_ln |
ls: fw_result_ln: No such file or directory fw_result: total 0 drwxr-xr-x 5 piaoyu.qiu staff 160 4 16 13:57 . drwxr-xr-x@ 108 piaoyu.qiu staff 3456 4 16 13:57 .. -rw-r--r-- 1 piaoyu.qiu staff 0 4 16 13:57 log.html -rw-r--r-- 1 piaoyu.qiu staff 0 4 16 13:57 output.xml -rw-r--r-- 1 piaoyu.qiu staff 0 4 16 13:57 report.html |
目标目录fw_result_ln不存在 |
ln -s fw_result fw_result_ln 建立连接 ll fw_result fw_result_ln 查看是否有连接建立 |
lrwxr-xr-x 1 piaoyu.qiu staff 9 4 16 13:59 fw_result_ln -> fw_result
fw_result: total 0 drwxr-xr-x 5 piaoyu.qiu staff 160 4 16 13:57 . drwxr-xr-x@ 109 piaoyu.qiu staff 3488 4 16 13:59 .. -rw-r--r-- 1 piaoyu.qiu staff 0 4 16 13:57 log.html -rw-r--r-- 1 piaoyu.qiu staff 0 4 16 13:57 output.xml -rw-r--r-- 1 piaoyu.qiu staff 0 4 16 13:57 report.html |
成功建立链接,目标目录fw_result_ln上存在链接 |
unlink fw_result_ln 取消链接方式1 ll fw_result fw_result_ln 查看是否存在链接 |
ls: fw_result_ln: No such file or directory fw_result: total 0 drwxr-xr-x 5 piaoyu.qiu staff 160 4 16 13:57 . drwxr-xr-x@ 108 piaoyu.qiu staff 3456 4 16 16:24 .. -rw-r--r-- 1 piaoyu.qiu staff 0 4 16 13:57 log.html -rw-r--r-- 1 piaoyu.qiu staff 0 4 16 13:57 output.xml -rw-r--r-- 1 piaoyu.qiu staff 0 4 16 13:57 report.html |
取消链接后,目标目录fw_result_ln不存在 |
rm -rf fw_result_ln 取消连接方式2 |
结果同上 |
取消链接后,目标目录fw_result_ln不存在 |
rm -rf fw_result_ln/ 取消连接的错误方式 ll fw_result fw_result_ln 查看是否存在链接 cd fw_result_ln |
command2的结果: ls: fw_result: No such file or directory lrwxr-xr-x 1 piaoyu.qiu staff 9 4 16 16:25 fw_result_ln -> fw_result command3的结果: -bash: cd: fw_result_ln: No such file or directory |
链接便没有取消,且源文件被删除 原因:删除软链接 确实是用rm -fr xxxx,但是rm -rf xxxx/ 加了个/意味着删除文件夹 |
特别说明:
- 创建软链接时,如果软链接文件跟源文件不在同一个目录,那么源文件地址必须为绝对路径,否则创建出来的软链接无法使用。
- 不能针对文件创建硬链接。"linux系统中的硬连接有两个限制:不能跨越文件系统和不允许普通用户对目录作硬连接。
至于第一个限制,很好理解,而第二个就不那么好理解了。 我们对任何一个目录用ls -l 命令都可以看到其连接数至少是2,这也说明了系统中是存在硬连接的,而且命令ln -d 也可以让超级用户对目录作硬连接,这些都说明了系统限制对目录进行硬连接只是一个硬性规定,并不是逻辑上不允许或技术上的不可行。那么操作系统为什么要进行限制呢?如果引入了对目录的硬连接就有可能在目录中引入循环,那么在目录遍历的时候系统就会陷入无限循环当中。也许您会说,符号连接不也可以引入循环吗,那么为什么不限制目录的符号连接呢?原因就在于在linux系统中,每个文件(目录也是文件)都对应着一个inode结构,其中inode数据结构中包含了文件类型(目录,普通文件,符号连接文件等等)的信息,也就是说操作系统在遍历目录时可以判断出符号连接,既然可以判断出符号连接当然就可以采取一些措施来防范进入过大的循环了,系统在连续遇到8个符号连接后就停止遍历,这就是为什么对目录符号连接不会进入死循环的原因了。但是对于硬连接,由于操作系统中采用的数据结构和算法限制,目前是不能防这种死循环的。"