十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1. 先来了解一下Linux数据是如何保存和查询的
成都创新互联公司专注于中大型企业的成都网站制作、成都网站建设、外贸营销网站建设和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户上千,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注成都品牌网站建设和互联网程序开发,在前进的路上,与客户一起成长!
对操作系统来说,数据分为两种:1. 用户数据 (user data) 2.元数据 (metadata)。用户数据就是保存和记录文件的内容。比如一个1M的ppt文件,500K的txt文件。这都属于用户数据。这个文件总有属性吧,比如大小、修改时间、访问时间、创建时间、存储的位置(文件所在的inode)、文件创建者等等信息。这些属性信息或者理解为汇总信息,我们称它为元数据。一句话,用户数据是文件的真实内容,而元数据则是汇总信息。
在 Linux 中,元数据中的 inode 号(inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。
2. 查看文件对应的inode号
134474678 latest.tar.gz
linux查看文件对应的inode号
可以看出latest.tar.gz这个文件, inode 号是134474678,Linux查找读写该文件时,以为个inode号码为标识,而不是文件名。文件名类似于网站域名,仅仅是方便人类记忆。
也就是说, inode134474678有一个硬链接,它就是latest.tar.gz。
3. 根据inode号查找对应的文件
那么,问题来了,系统上有没有第二个文件,它的inode号码也是13447467。
使用find查找一下:
查找结果如下:
/root/latest.tar.gz
/root/latest2.tar.gz
linux根据inode号查找对应的文件
硬盘上真的有第二个文件它的inode号码也是134474678,像这种情况,我们认为inode134474678有两个硬链接。当然,这是本文作者提前准备好的。
为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。
4. 确认硬链接的数量
查看一下文件latest.tar.gz
输出结果如下:
-rwxr-xr-x. 2 root root 8743850 Oct 11 15:00 latest.tar.gz
请留意输出的结果中的数字2,表示该文件存在2个硬链接。
正常情况下,一个inode只有一个链接,如下例
输出结果:
-rw-r--r--. 1 root root 9 Nov 21 11:39 abc.txt
请留意输出的结果中的数字1,表示该文件只存在1个硬链接,默认情况下,文件都是只有一个硬链接的。
5. 查看软链接
再来看一个文件
lrwxrwxrwx. 1 root root 15 Sep 26 15:57 /dev/stdout - /proc/self/fd/1
linux查看软链接
我们发现,/dev/stdout实际上指向另一个文件/proc/self/fd/1,这就是软链接。类似于Windows系统上的快捷方式。
6. 软链接与硬链接的区别
6.1 软链接特点
6.2 硬链接特点
ln链接符原理如下:
Linux ln链接符原理图
7. 创建文件的链接
Linux ln命令是一个非常重要而且常用命令,它用于为文件或者目录创建链接。
7.1 创建软链接
创建一个文件,用于演示软链接。
创建软链接示例:
检查结果:
输出文件属性
lrwxrwxrwx. 1 root root 8 Nov 26 17:48 soft123.txt - soft.txt
linux创建软链接
可以看出这个文件指向当前目录soft.txt,配置成功。7.2 创建硬链接
创建一个文件,用于演示硬链接。
创建硬链接,没有使用选项
检查结果:
输出文件属性:
-rw-r--r--. 2 root root 0 Nov 26 17:47 hard123.txt
linux创建硬链接
留意以上输出数字2,表明该文件有2个副本。
8. 总结
ln命令可以创建文件的副本,也可以创建软链接。
在了Linux下创建硬连接和软连接(也就是符号连接)都是用ln命令,当使用ln命令时加上-s选项就表示创建的连接文件是一个软连接,如果使用ln命令时不带-s选项就表示创建的是一个硬连接。而ln命令的格式则是:ln 原文件 连接文件
比如如下命令是创建硬连接的,/home/testfile就是创建的硬连接文件,它连接到/root/testfile这个文件:
ln /root/testfile /home/testfile
下面的则是创建软连接的,这次/home/testfile是一个软连接文件:
ln -s /root/testfile /home/testfile
ln
作者: 日期:2003-05-28 13:14:40 浏览次数:
ln(link)
功能说明:连接文件或目录。
语法:ln [-bdfinsv][-S 字尾备份字符串][-V 备份方式][--help][--version][源文件或目录][目标文件或目录] 或 ln [-bdfinsv][-S 字尾备份字符串][-V 备份方式][--help][--version][源文件或目录...][目的目录]
补充说明:ln指令用在连接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地并非是一个已存在的目录,则会出现错误信息。
参数:
-b或--backup 删除,覆盖目标文件之前的备份。
-d或-F或--directory 建立目录的硬连接。
-f或--force 强行建立文件或目录的连接,不论文件或目录是否存在。
-i或--interactive 覆盖既有文件之前先询问用户。
-n或--no-dereference 把符号连接的目的目录视为一般文件。
-s或--symbolic 对源文件建立符号连接,而非硬连接。
-S字尾备份字符串或--suffix=字尾备份字符串 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的字尾备份字符串是符号"~",您可通过"-S"参数来改变它。
-v或--verbose 显示指令执行过程。
-V备份方式或--version-control=备份方式 用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用"-S"参数变更,当使用"-V"参数备份方式指定不同备份方式时,也会产生不同字尾的备份字符串。
--help 在线帮助。
--version 显示版本信息。
这种问题网上的例子很多的,如果还有不明白,在网上自己多查查
1、首先有一个目录dir, 执行ln -s dir dir_link 创建目录的软链接。
2、重新创建mkdir源目录,目录软链接重新生效。
3、执行命令ln dir dir_hard,创建目录的硬链接。
4、执行命令ln -s file file_link,创建文件file的软链接file_link。
5、执行命令ln file file_hard创建文件file的硬链接file_hard。
6、修改硬链接file_hard、cat file,同时更新到源文件中即可。