天天看点

软链接和硬链接

软链接和硬链接区别

​硬链接是文件的副本拷贝,原文件名和连接文件名都指向相同的物理地址,使用的是相同的inode1,修改其中一个,与其连接的文件同时被修改。如果删除其中任意一个其余的文件将不受影响

​​符号连接(软连接):用ln -s命令建立文件的符号连接符号连接是linux特殊文件的一种,作为一个文件,它的数据是它所连接的文件的路径名。类似windows下的快捷方式。当然删除这个连接,也不会影响到源文件,但对连接文件的使用、引用都是直接调用源文件的。具体关系可以看下图:

​​1:硬链接原文件和新文件的inode编号一致。而软链接不一样。

2:对原文件删除,会导致软链接不可用,而硬链接不受影响。

3:对原文件的修改,软、硬链接文件内容也一样的修改,因为都是指向同一个文件内容的。

软链接和硬链接

软链接比较实用的一个功能是,一个正在使用的文件不断增大,但是当前分区空间不足,可以将该文件移动到其他目录下,软链接到当前目录,服务或应用认为文件仍然在当前目录下,继续正常运行。起到了一个偷梁换柱的功能。软链接也可以作用于目录

[root@daixuan ~]# ln -s /root/12.txt /tmp/235.txt            ln后有 -s 是软链接

[root@daixuan ~]# !ls

ls -l /tmp

lrwxrwxrwx  1 root    root      12 10月 25 00:25 235.txt -> /root/12.txt

[root@daixuan ~]# du -sh /root/1.txt;du -sh /tmp/1.txt

12K     /root/1.txt                       源数据12k

0       /tmp/1.txt                         软链接文件0k

硬链接实际上是给一个文件做了一个替身,让他们都指向同一个inode(inode是每一个文件或目录的核心原数据,记录着文件名、属性、磁盘位置等信息,Linux的服务或者内核在使用文件或者目录,都是通过inode找到),说白了,就是给一个inode多做了一个替身,多做了一个克隆。

一个文件对应一个inode,可以让多个文件对应同一个inode,但是不能让多个inode对应一个文件,修改其中一个文件,另一个也会改变,但是删除其中一个文件,另一个不受影响。

硬链接不能用于目录,只能用于文件。

[root@daixuan ~]# ln /root/123.txt /tmp/daixuantest.txt             ln后没有 -s 是硬链接

[root@daixuan ~]# du -sh /root/123.txt ;du -sh /tmp/daixuantest.txt

4.0K    /root/123.txt               大小相同

4.0K    /tmp/daixuantest.txt

删除其中任何一个对另外一个没有影响。

但是硬链接有一个限制,只能在同一个分区下去操作。

[root@daixuan ~]# ln /tmp/234.txt /boot/1.txt

ln: 创建硬链接"/boot/1.txt" => "/tmp/234.txt": 无效的跨设备连接

上一篇: Shell:变量