2.21 软链接文件

December 09, 2023
测试
测试
测试
测试
6 分钟阅读

软链接介绍

  • 链接文件分为硬链接文件(hard link)和软链接文件(symbolic link),两种链接的本质区别在于inode。
    • 软链接文件:是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。做软链接尽量使用绝对路径。

例子

```
[root@hf-01 ~]# ls -l /bin     这个/bin,就是一个软链接文件,真正是在/usr/bin/下
lrwxrwxrwx. 1 root root 7 8月  21 05:03 /bin -> usr/bin
[root@hf-01 ~]# /bin/ls
11.txt	123  234  2.txt  33.txt  anaconda-ks.cfg.1  ha.txt  hf
[root@hf-01 ~]# /usr/bin/ls     会发现和/bin/ls是一个软链接文件
11.txt	123  234  2.txt  33.txt  anaconda-ks.cfg.1  ha.txt  hf
```

软链接其实就是在一个文件本身存了另一个文件目录的路径。链接文件的大小适合路径是有关系的,路径越长,那这个软链接文件越大

软链接优势

软链接就像是windows中的快捷方式,可以很大程度的节省磁盘空间

案例分析
比如要找一个文件,必须要在/tmp/123/12/1.txt,而本身这个1.txt文件放到了/root/123/这个目录下
而这个程序必须要在/tmp/12/目录下找到1.txt文件

方法一:可以拷贝一份到该目录下,但若是文件更改后,就会继续要拷贝,所以很麻烦。

方法二:给/root/123/1.txt做一个软链接
ln -s创建软链接
  • ln -s 源文件 软链接文件
[root@hf-01 ~]# ls
11.txt  123  234  2.txt  33.txt  anaconda-ks.cfg.1  ha.txt  hf
[root@hf-01 ~]# cd /tmp/
[root@hf-01 tmp]# ls
aminglinux  amning  mysql.sock  user1  yum.log  yunwei
[root@hf-01 tmp]# ln -s /tmp/yum.log /root/123/yum.log
[root@hf-01 tmp]# ls -l /root/123/      这样就形成了一个软链接文件
总用量 0
lrwxrwxrwx. 1 root root 12 10月 30 05:44 yum.log -> /tmp/yum.log
ln -s 链接目录
  • 不仅可以链接文件,还可以链接目录
[root@hf-01 tmp]# ln -s /tmp/amning/ /root/amning111
[root@hf-01 tmp]# ls -l !$
ls -l /root/amning111
lrwxrwxrwx. 1 root root 12 10月 30 05:51 /root/amning111 -> /tmp/amning/
同一目录,创建软链接
  • 在/tmp/目录下,源文件aa.log链接——》目标文件ss.log
[root@hf-01 tmp]# ls -l
总用量 4
-rw-r--r--. 1 root    root     0 10月 30 06:09 aa.log
srwxrwxrwx. 1 mysql   mysql    0 10月 30 04:49 mysql.sock
drwxrwxrwx. 2 user1   user1    6 10月 27 09:07 user1
[root@hf-01 tmp]# ln -s aa.log ss.log
[root@hf-01 tmp]# ls -l
总用量 4
-rw-r--r--. 1 root    root     0 10月 30 06:09 aa.log
srwxrwxrwx. 1 mysql   mysql    0 10月 30 04:49 mysql.sock
lrwxrwxrwx. 1 root    root     6 10月 30 06:13 ss.log -> aa.log
弊端——在同一目录下
  • 弊端——假设做了一个相对路径的软链接,再把所有的文件拷贝到另一台机器上的时候(软链接本身也是一个文件),结果会发现这个文件不存在,(也就是源不存在),所以尽量使用绝对路径
弊端解决方法
  • 尽量使用绝对路径,这样就会避免文件的不存在
[root@hf-01 ~]# cd /tmp/
[root@hf-01 tmp]# ls -l
总用量 4
drwxr-xr-x. 4 user1   hanfeng 53 10月 30 06:01 aminglinux
lrwxrwxrwx. 1 root    root     6 10月 30 06:13 ss.log -> aa.log
[root@hf-01 tmp]# mv ss.log aminglinux/
[root@hf-01 tmp]# cd aminglinux
[root@hf-01 aminglinux]# ls -l
总用量 0
drwxr-xr-x. 4 user1 hanfeng 31 10月 25 06:55 aming2
lrwxrwxrwx. 1 root  root     6 10月 30 06:13 ss.log -> aa.log

这里会发现aa.log在飘红闪烁,这是因为这个文件不存在

阿铭工作中例子

[root@hf-01 ~]# df -h    查看磁盘分区情况
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda3        18G  2.4G   16G   14% /
devtmpfs        489M     0  489M    0% /dev
tmpfs           494M     0  494M    0% /dev/shm
tmpfs           494M  6.7M  487M    2% /run
tmpfs           494M     0  494M    0% /sys/fs/cgroup
/dev/sda1       197M   75M  123M   38% /boot
  • 假如在/boot下,一个hanfeng.log日志文件占用很大空间,但是这个yin.log日志文件必须在这个/boot目录下,不能更改文件路径,那么就可以使用软链接来完美解决这个问题。可以将hanfeng.log 复制到/根目录下(大磁盘空间下)cp /boot/hanfeng.log /hanfeng.log 然后删除/boot/hanfeng.log文件,尽快的将复制的那个日志做个软链接链接到/boot,ln -s /hanfeng.log /boot/hanfeng.log就可以解决文件过大但是不能改路径的问题。

总结

  • 命令ln(link)
  • 格式:ln【-s】 【来源文件】【目的文件】
  • -s 建立软链接,不加-s建立硬链接。

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多