Linux文件鏈接的介紹及其應(yīng)用

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

硬鏈接

首先我們來(lái)看硬鏈接,我們來(lái)用php中變量的引用來(lái)對(duì)比吧。

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

可以將$a看做是一個(gè)文件,而$b看出是$a文件的硬鏈接。現(xiàn)在的作用是,不管是$a或$b作了修改,都會(huì)影響到對(duì)方。

那現(xiàn)在將其中一個(gè)文件刪除,另一個(gè)文件還存在嗎?

unset($b);

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

下面,我們來(lái)看看是不是和上面所說(shuō)一樣。創(chuàng)建硬鏈接的命令如下:

ln?源文件?鏈接文件

目前系統(tǒng)有一個(gè)1.php文件,現(xiàn)在我們來(lái)給他創(chuàng)建個(gè)硬鏈接。

#?ln?1.php?2.php  #?cat?1.php <?php $a = 100; $b = &$a; $b = 1000; echo $a;

現(xiàn)在我們來(lái)修改下2.php文件,看看1.php文件是否也會(huì)被修改。

#?echo?-e?'n?&gt;'?&gt;&gt;?2.php  #?cat?1.php <?php $a = 100; $b = &$a; $b = 1000; echo $a;  ?>

可以看到,修改了2.php,1.php文件也會(huì)被修改。現(xiàn)在我們來(lái)刪除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文件依舊是存在的。

上面介紹了硬鏈接的作用,下面來(lái)說(shuō)下硬鏈接在使用時(shí)候的限制:

  • 不能鏈接目錄

  • 不能跨文件系統(tǒng)來(lái)做鏈接

由于以上兩點(diǎn)的限制導(dǎo)致日常使用硬鏈接的機(jī)會(huì)很少,下面介紹另外一種鏈接——軟鏈接,它沒(méi)有上述的限制,所以平時(shí)用的很多哦!。

軟鏈接

一般會(huì)將軟鏈接和windows系統(tǒng)中的桌面快捷方式來(lái)對(duì)比,通過(guò)創(chuàng)建軟鏈接可以很方便的執(zhí)行一個(gè)命令,而不用去找文件的目錄位置。另外,刪除了軟鏈接文件,源文件依舊存在。但是,如果刪除了源文件,那么鏈接文件就沒(méi)有作用了。

軟鏈接分為文件及目錄兩種,下面分別介紹下這兩種鏈接的作用。

給文件做軟鏈接

你有沒(méi)有想過(guò),為什么你安裝好了mysql后,不用使用絕對(duì)路徑,就可以使用mysql來(lái)執(zhí)行。這里面就是使用到了軟鏈接。

#?which?mysql /usr/bin/mysql #?ll?/usr/bin/mysql lrwxrwxrwx?1?root?root?26?Nov??4??2019?/usr/bin/mysql?-&gt;?/usr/local/mysql/bin/mysql

可以看出,該命令的實(shí)際地址是/usr/local/mysql/bin/mysql,但是給該文件做了軟鏈接到了/usr/bin/目錄下,所以就不用使用絕對(duì)路徑即可調(diào)用該命令了。

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

首先創(chuàng)建一個(gè)文件soft.sh

vim?soft  #!/bin/bash echo?'study?softlink'  #?chmod?u+x?soft

然后給該文件創(chuàng)建軟鏈接,看看直接執(zhí)行該命令是不是可以了

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

給目錄做軟鏈接

首先,我們需要注意的是,做軟鏈接時(shí),目標(biāo)文件或目錄必須不存在。

下面,我們引出一個(gè)場(chǎng)景,該場(chǎng)景非常的常見(jiàn):

網(wǎng)站文件存放在/www/wwwroot目錄下,隨著系統(tǒng)運(yùn)行時(shí)間越來(lái)越差,該目錄越來(lái)越大,由于該目錄是和根目錄在同一個(gè)分區(qū),根目錄快要寫滿了。而另外一個(gè)分區(qū)目錄/data還剩99G剩余空間。這時(shí)候,不想重新分區(qū),那么需要怎樣做才能使得根目錄所在分區(qū)取得解放。

下面,我們使用目錄軟鏈接來(lái)解決該問(wèn)題。首先,在/data目錄下建立wwwroot目錄,然后將/www/wwwroot目錄下所有文件移動(dòng)到/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

現(xiàn)在,我們來(lái)測(cè)試下問(wèn)題是否真的解決了。目前根分區(qū)使用率為19%,而/data分區(qū)使用率為9%。

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

我們?cè)?www/wwwroot目錄下創(chuàng)建一個(gè)2G的大文件,然后看看哪個(gè)分區(qū)的容量變大了。我們想要的答案是/data分區(qū)使用率變高,而根分區(qū)不變。

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

可以看到,根分區(qū)可用容量還是33G,但/data分區(qū)已經(jīng)從458G變?yōu)榱?56G,所以說(shuō)我們解決了問(wèn)題。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊15 分享