创建软连接 ln -s
我们通过实例查看ls的路径发现,在/tmp/目录下的/bin/ls指向的是/usr/bin/ls,所以这里/tmp/bin/ls所存储的就是一个绝对路径,我们可以看做是一个软链接文件,其大小根据绝对路径的长度来决定。类似快捷方式。应用场景,将日志拷贝到另外的地方,在原位置留下软链接,可以更改文件的存放位置。
特点:
软链接和目标文件不是同一个文件,inode号不相同。
目标文件的删除操作会影响软链接文件。当链接文件被删除时,不会对目标文件产生影响;当删除目标文件/目录时,由于失去了目标指向,软链接会失效,变成死链。
能跨分区创建软链接。(使用命令 #hf -h 查看分区的大小是使用情况的时候,挂载点那一行就是分区。)
注意事项:
写软连接的时候最好是写绝对路径,不然会存在一些弊端,好比当我们把所有的文件拷贝到另一台机器上,会发现源文件不存在。
当我们建立软链接的时候,目的文件不可以存在,否则建立不成功。
[root@master tmp]# ls -l /bin
lrwxrwxrwx. 1 root root 7 May 15 23:23 /bin -> usr/bin #可以看到这一行的第一个字母为 l ,这个 l 就代表它是一个软链接文件 。/bin 相当于Windows下的快捷方式,而usr/bin才是它真正的目录。
[root@master tmp]# ls -ld /usr/bin
dr-xr-xr-x. 2 root root 24576 Jun 1 09:31 /usr/bin
[root@master tmp]# /bin/ls
ls2
systemd-private-0ff0f3dae2804d77b70af201e3ee734b-vgauthd.service-ZPbHKi
systemd-private-0ff0f3dae2804d77b70af201e3ee734b-vmtoolsd.service-i4O0pB
systemd-private-ea100dfd1fe140c88cfaf97842a8a7ad-vgauthd.service-MJNNdA
systemd-private-ea100dfd1fe140c88cfaf97842a8a7ad-vmtoolsd.service-tIHYJp
[root@master tmp]# /usr/bin/ls
ls2
systemd-private-0ff0f3dae2804d77b70af201e3ee734b-vgauthd.service-ZPbHKi
systemd-private-0ff0f3dae2804d77b70af201e3ee734b-vmtoolsd.service-i4O0pB
systemd-private-ea100dfd1fe140c88cfaf97842a8a7ad-vgauthd.service-MJNNdA
systemd-private-ea100dfd1fe140c88cfaf97842a8a7ad-vmtoolsd.service-tIHYJp
实例
对文件软连接
[root@master ~]# ln -s /root/2.txt /root/test/3.txt
[root@master ~]# ls -ld /root/2.txt /root/test/3.txt
-rw-r--r--. 1 root root 0 Jun 8 01:45 /root/2.txt
lrwxrwxrwx. 1 root root 11 Jun 8 01:57 /root/test/3.txt -> /root/2.txt (2.txt 部分是源文件; /root/test/2.txt是目标文件)
对目录软连接
[root@master ~]# ls -ld 、/root/tmp/xiaoliang /root/xiao
lrwxrwxrwx. 1 root root 15 Jun 8 01:52 /root/xiao -> /tmp/xiaoliang/
drwxr-xr-x. 2 root root 6 Jun 8 01:52 /tmp/xiaoliang
需求:日志快写满磁盘怎么办?
比如有一个进程不断的往/boot 分区不停的往这个分区写数据,而此时随着时间的增长,这个分区即将被写满,会把磁盘撑爆,甚至会导致系统出现故障。
cp /boot/a.log /a.log(把/boot/a.log文件拷贝到 /a.log;也就是比较大的分区下面)
rm -rf /boot/a.log ; ln -s /a.log /boot/a.log (拷贝过/分区后,马上删了/boot下的a.log;然后去做一个软连接,此时,实际上写的是/a.log;这样就解决了占用磁盘空间的问题了)