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創建硬連接。
相關文章
相關標籤/搜索