首頁  >  文章  >  運維  >  Linux檔案連結的介紹及其應用

Linux檔案連結的介紹及其應用

齐天大圣
齐天大圣原創
2020-06-20 11:13:492270瀏覽

linux中對文件的鏈接分為兩種,一種是硬鏈接,另一種是軟鏈接。今天和大家介紹下這兩種鏈接,以及如何去使用他們。

硬連結

首先我們來看硬鏈接,我們來用php中變數的引用來比較吧。

$a = 100;
$b = &$a;

可以將$a視為一個文件,而$b看出是$a文件的硬連結。現在的作用是,不管是$a或$b作了修改,都會影響到對方。

那現在將其中一個檔案刪除,另一個檔案還存在嗎?

unset($b);

即使刪除了$b文件,$a文件還是存在的。

下面,我們來看看是不是跟上面所說一樣。創建硬連結的命令如下:

ln 源文件 链接文件

目前系統有一個1.php文件,現在我們來給他建立個硬連結。

# ln 1.php 2.php

# cat 1.php

現在我們來修改下2.php文件,看看1.php文件是否也會被修改。

# echo -e '\n?>' >> 2.php

# cat 1.php

可以看到,修改了2.php,1.php檔案也會被修改。現在讓我們來刪除2.php文件,看看1.php文件是否還存在。

# rm -f 2.php
# ll 1.php
-rw-r--r-- 1 root root 52 Jun 20 08:05 1.php

可以看到,即使刪除了2.php,1.php檔案依舊是存在的。

上面介紹了硬連結的作用,以下來說下​​硬連結在使用時候的限制:

  • #不能連結目錄

  • 不能跨文件系統來做鏈接

由於以上兩點的限制導致日常使用硬鏈接的機會很少,下面介紹另外一種鏈接——軟鏈接,它沒有上述的限制,所以平常用的很多哦! 。

軟體連結

通常會將軟連結和windows系統中的桌面捷徑來對比,透過建立軟連結可以很方便的執行一個指令,而不用去找檔案的目錄位置。另外,刪除了軟連結文件,來源文件依舊存在。但是,如果刪除了來源文件,那麼連結文件就沒有作用了。

軟體連結分為檔案及目錄兩種,以下分別介紹下這兩種連結的作用。

給檔案做軟連結

你有沒有想過,為什麼你安裝好了mysql後,不用使用絕對路徑,就可以使用mysql來執行。這裡面就是使用到了軟連結。

# which mysql
/usr/bin/mysql
# ll /usr/bin/mysql
lrwxrwxrwx 1 root root 26 Nov  4  2019 /usr/bin/mysql -> /usr/local/mysql/bin/mysql

可以看出,該指令的實際位址是/usr/local/mysql/bin/mysql,但是給該檔案做了軟連結到了/usr/bin/目錄下,所以就不用使用絕對路徑即可呼叫該命令了。

下面我們自己做一個文件軟鏈接,看是不是這樣的。

先建立一個檔案soft.sh

vim soft

#!/bin/bash
echo 'study softlink'

# chmod u+x soft

然後給該檔案建立軟鏈接,看看直接執行該指令是不是可以了

# ln -s /root/soft  /usr/bin/
# soft
study softlink

給目錄做軟連結

首先,我們要注意的是,當做軟連結時,目標檔案或目錄必須不存在。

下面,我們引出一個場景,該場景非常的常見:

網站檔案存放在/www/wwwroot目錄下,隨著系統運行時間越來越差,該目錄越來越大,由於該目錄是和根目錄在同一個分區,根目錄快要寫滿了。而另外一個分區目錄/data還剩99G剩餘空間。這時候,不想重新分區,那麼需要怎麼做才能使得根目錄所在分區取得解放。

下面,我們使用目錄軟連結來解決該問題。首先,在/data目錄下建立wwwroot目錄,然後將/www/wwwroot目錄下所有檔案移到/data/wwwfile下,再刪除/www/wwwroot目錄。最後給/data/wwwfile目錄軟連結到/www/wwwroot

mkdir /data/wwwfile
mv /www/wwwroot/* /data/wwwfile
rm -rf /www/wwwroot
ln -s /data/wwwfile /www/wwwroot

現在,我們來測試下問題是否真的解決了。目前根分區使用率為19%,而/data分區使用率為9%。

/dev/vda1        40G  7.4G   33G  19% /
/dev/vdb1       500G   43G  458G   9% /data

我們在/www/wwwroot目錄下建立一個2G的大文件,然後看看哪個分割區的容量變大了。我們想要的答案是/data分區使用率變高,而根分區不變。

dd if=/dev/zero of=/www/wwwroot/bigfile bs=1G count=2
# 然后看看各分区使用容量的变化
/dev/vda1        40G  7.4G   33G  19% /
/dev/vdb1       500G   45G  456G   9% /data

可以看到,根分區可用容量還是33G,但/data分區已經從458G變成456G,所以說我們解決了問題。

以上是Linux檔案連結的介紹及其應用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn