软链接文件
1. 什么是软链接文件
Linux系统中的软链接文件就类似于Windows系统中的快捷方式 .
假设场景 : 对于A文件 , 必须保存在/root/111/目录下 , 但是有另外一个程序也在使用这A文件并且需要一直往A文件中追加log , 但是这个程序必须要在/tmp/111目录下来使用A文件 . 那么这样就两种方式来实现 .
方式1 : 给/root/111/下的A文件 , copy一份 , 放到/tmp/111/目录下 , 供程序使用 , 在程序使用一段时间后 , A文件被修改了 , 然后再在/tmp/111/目录下 , 把A文件copy回/root/111/中 , 以保证A文件的一致性 .
方式2 : 给/root/111/下的A文件 , 做一个软链接 , 链接到/tmp/111/目录下 , 名字还是叫A , 供程序调用 . 由于软链接相当于快捷方式 , 所以 , 不管程序给/tmp/111/目录下的A文件追加了多少内容 , /root/111/下的A文件都会保持一致 .
很明显 , 方式2比方式1操作更简单 , 占用磁盘空间更少 .
2. 认识系统中的软链接文件
[[email protected] ~]# ls -l /binlrwxrwxrwx. 1 root root 7 5月 22 23:52 /bin -> usr/bin [[email protected] ~]#
/bin是一个目录 , 其实真正存放在/usr/bin (目录是一种特殊的文件)
> 系统中 , 最多的软链接文件 , 是在lib64/目录下
3. 创建软链接文件
格式 : ln -s 源文件 目标文件
软链接既支持对文件做软链接 , 也支持对目录做软链接
ps : 一个约定 , 在创建软链接文件时,最好使用绝对路径 . 假如使用相对路径 , 在源文件转移了位置的情况下 , 会出问题 .
[[email protected] ~]# ls 2.txt anaconda-ks.cfg.1[[email protected] ~]# ls /tmp/111 234 666 allinlinux tmp222 345 allin2 systemd-private-0f4b60569c224727b1ec0153a8598630-vmtoolsd.service-qCx2Tt user1.txt [[email protected] ~]# ln -s /root/2.txt /tmp/2.txt[[email protected] ~]# ls -l /tmp/总用量 0drwxrwxr--. 4 root root 45 6月 8 21:20 111drwxr-xr-x. 2 root root 6 6月 8 20:11 222drwxrwxr-x. 3 allin1 allin1 26 6月 9 10:53 234lrwxrwxrwx. 1 root root 11 6月 9 14:06 2.txt -> /root/2.txt drwxr-xr-x. 3 root root 26 6月 9 10:56 345drwxr-sr-x. 3 root user1 26 6月 9 11:10 666drwxr-xr-x. 4 root root 40 6月 6 21:32 allin2 drwxrwxrwx. 2 allin1 user1 19 6月 8 14:58 allinlinux drwx------. 3 root root 17 6月 8 14:15 systemd-private-0f4b60569c224727b1ec0153a8598630-vmtoolsd.service-qCx2Tt drwxr-xr-x. 4 root root 28 6月 6 17:16 tmp -rw-rw-r--. 1 user1 user1 0 6月 9 13:03 user1.txt [[email protected] ~]#
4. 工作中软链接的运用
场景 : 有一个文件 , 存放在一个磁盘空间快满了的分区上 , 并且有一个重要的服务 ,一直在向这个文件追加log , 并且该服务只能作用于该分区的该文件上 .
为了更好的保存log , 可以使用软链接来操作 , 以达到既满足磁盘空间充足 , 又能完整的保存所有log的需要 .
- 把该文件copy到一个磁盘空间非常充裕的磁盘分区上 , 并同步好数据(可以使用rsync工具来保持文件内容同步,速度非常快, 一瞬间).
- 使用软链接 , 把该文件软链接到原来的的磁盘分区上 , 文件名保持一致 , 为了那个重要的服务能正常运行 .
- 删除原来的文件 , 让服务对软链接文件继续服务 .