加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_新乡站长网 (https://www.0373zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux文件链接软硬的介绍及其应用

发布时间:2022-11-29 10:56:40 所属栏目:Linux 来源:
导读:  本文为php中文网认证作者:“齐天大圣”投稿,欢迎加入!

  linux中对文件的链接分为两种,一种是硬链接,另一种是软链接。今天和大家介绍下这两种链接,以及如何去使用他们。

  硬链接
  本文为php中文网认证作者:“齐天大圣”投稿,欢迎加入!
 
  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
 
  $a = 100;
 
  $b = &$a;
 
  $b = 1000;
 
  echo?$a;
 
  现在我们来修改下2.php文件,看看1.php文件是否也会被修改。
 
  # echo -e '\n?>' >> 2.php
 
  # cat 1.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/mysql
 
  lrwxrwxrwx?1?root?root?26?Nov??4??2019?/usr/bin/mysql?->?/usr/local/mysql/bin/mysql
 
  可以看出,该命令的实际地址是/usr/local/mysql/bin/mysqllinux软链接,但是给该文件做了软链接到了/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,所以说我们解决了问题。
 
 

(编辑:开发网_新乡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!