链接

首先我们来看硬链接,我们来用php中变量的引用来比拟吧。

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

可以将$a看做是一个文件,而$b看出是$a文件的硬链接。
现在的浸染是,不管是$a或$b作了修正,都会影响到对方。

php软连接Linux文件链接软硬的介绍及其运用 RESTful API

那现在将个中一个文件删除,另一个文件还存在吗?

unset($b);

纵然删除了$b文件,$a文件还是存在的。

下面,我们来看看是不是和上面所说一样。
创建硬链接的命令如下:

ln 源文件 链接文件

目前系统有一个1.php文件,现在我们来给他创建个硬链接。

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

现在我们来修正下2.php文件,看看1.php文件是否也会被修正。

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

可以看到,修正了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/in/mysql# ll /usr/bin/mysqllrwxrwxrwx 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/bashecho 'study softlink'# chmod u+x soft

然后给该文件创建软链接,看看直接实行该命令是不是可以了

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

给目录做短链接

首先,我们须要把稳的是,做软链接时,目标文件或目录必须不存在。

下面,我们引出一个场景,该场景非常的常见:

网站文件存放在/www/wwwroot目录下,随着系统运行韶光越来越差,该目录越来越大,由于该目录是和根目录在同一个分区,根目录快要写满了。
而其余一个分区目录/data还剩99G剩余空间。
这时候,不想重新分区,那么须要若何做才能使得根目录所在分区取得解放。

下面,我们利用目录软链接来办理该问题。
首先,在/data目录下建立wwwroot目录,然后将/www/wwwroot目录下所有文件移动到/data/wwwfile下,再删除/www/wwwroot目录。
末了给/data/wwwfile目录软链接到/www/wwwroot

mkdir /data/wwwfilemv /www/wwwroot/ /data/wwwfilerm -rf /www/wwwrootln -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,以是说我们办理了问题。