2.21 软连接文件

软连接介绍

  • 连接文件分为硬连接文件(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
```
  • 软连接其实就是在一个文件自己存了另外一个文件目录的路径。连接文件的大小适合路径是有关系的,路径越长,那这个软连接文件越大
    在/lib64/目录中软连接文件最多
    [root@hf-01 ~]# ls -l /lib64/

软连接优点

软连接就像是windows中的快捷方式,能够很大程度的节省磁盘空间node

案例分析

好比要找一个文件,必需要在/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创建硬连接。
相关文章
相关标签/搜索