2.21 软链接文件

Wesley13
• 阅读 918

软链接介绍

  • 链接文件分为硬链接文件(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中的快捷方式,可以很大程度的节省磁盘空间

案例分析

比如要找一个文件,必须要在/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建立硬链接。
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
菜园前端 菜园前端
1年前
DOM 文档对象模型使用教程来喽!
原文链接:HTML模板html我是网站标题访问节点通过id访问指定节点getElementByIdjavascriptvarnodedocument.getElementById('box')通过name访问指定节点getElementsByNamejav
linux 文件权限
当我们部署皕杰报表时,有时需要对文件赋予权限。linux文件对不同用户可以分别设置权限,管理员(root)有所有权限。文件权限解释查看路径下所有文件的命令:ll或者lsl查询结果列出了当前路径下的文件和文件夹,每行数据以相同格式显示。第一个字符常见的两种,d和,d表示文件夹,表示文件。还有l表示链接,软链接比较常见,如图:从第二个字符开始,每三个一组
Wesley13 Wesley13
3年前
4.16 chown 4.17 软链接和硬链接 4.18 软链接用法示例 4.19 yum工具 4.20 rpm工具
4.16chownchown用来更改一个文件或者目录的所有者或者所属组\R级联更改一个目录下所有的目录和文件例如:chownuser1:users1.txtchownuser1.users1.txt中间可以用冒号也可以用点useradd添加用户的命令,如useradduser1添加u
Stella981 Stella981
3年前
Linux 软链接的创建、删除和更新
创建软链接lns源文件或目录目标文件或目录例如:当前路劲创建test引向/var/www/test文件夹lns/var/www/testtest创建/var/test引向/var/www/test文件夹lns/var/www/test/var/test删除软链
Stella981 Stella981
3年前
Markdown文件中的GitHub相对链接
问题:_IsthereawaytocreateaURLanchor,<a,linkfromwithinaMarkdownfile,toanotherfilewithinthesamerepositoryandbranch(akaalinkrelativetothecurrent
Wesley13 Wesley13
3年前
ubuntu 字体
1。解决在ubuntu下安装xp字体的问题:第一步:拷贝xp下的字体文件(控制面板字体)到一个文件夹,可命名为xpfonts;此方法适合单系统用户,如果是双系统用户,也可以考虑建立软链接;第二步:拷贝xpfonts文件夹到/usr/share/fonts下;具体的实现命令:#cdxpfonts文件夹所在目录#sudo
Stella981 Stella981
3年前
Linux中实体链接与符号链接详解
前言在Linux底下的连结档有两种,一种是类似Windows的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录),这种是软链接;另一种则是透过文件系统的inode连结来产生新档名,而不是产生新文件!这种称为硬链接(hardlink)。这两种玩意儿是完全不一样的东西呢!现在就分别来谈谈。1.实体链接在目录下创建一
Stella981 Stella981
3年前
Linux创建软硬链接和打包压缩、解压缩
软硬链接lnlinkmakelinksbetweenfiles语法:软链接lns源文件链接名称实例:lnsHelloWord.javahw.lnk给HelloWord.java创建了一个快捷方式,名字为hw.lnkcathw.lnk软链接可用rmrf
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这