Linux下如何实现创建/删除软连接
作者:技术大牛聂小小诚
Linux创建/删除软连接
废话不说直接正题
软链接,又称符号连接,与硬链接不同的是,软链接不链向索引节点号,而是链向目录。
相当于的Windows中的快捷方式。它实际上是一个特殊的文件。
在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
1.创建软链接
//就是说将源文件也可以是目录映射到目标文件或目标目录上。
ln -s源文件名目标文件名
这里将/ softwarehouse映射到/ var / www / html目录
这时候我们可以去的/ var / www / html等下看看
这一个淡蓝色的就是软链接,如果源目录有内容,比如a.txt中,那么目标目录也会有一个a.txt中的镜像。
2.删除软链接
第一种方式
去目标文件目录下直接rm softwarehouse ,
这种方式会给你提醒rm:删除符号链接'softwarehouse'?Y(是否删除软链接)
强烈建议这种方式,不然误删源文件源目录几率太大。
第二种方式
rm -rf目标文件名全路径也就是rm -rf / var / www / html 看仔细,一定不要rm -rf / var / www / html /,这种是删除文件目录,到时源文件的东西也没了,大家在按标签自动补全的时候注意了,会默认将最后的/补上,自己要记得删。
强烈建议第一种删除方式!
Linux创建软链接和删除时注意事项
记一次小型事故
因日志问题导致空间存储不足想来是运维碰到的很常见的事情,本次事故发生就是日志量过大导致/var这个目录空间使用率超过了95%,so我的初衷很简单一方面删除多余日志释放空间另一方面想办法扩大/var目录的使用空间,于是我想到了通过使用软链接的方式先将/var目录整个移到/data较大的挂载目录下,然后给/data/var做个软链接到/var即可。
接下来就踩坑环节
1、使用mv /var /data/var(小伙伴们千万不要这样做,尤其是服务器上有正在运行的服务时,/var这个目录是很关键的一个位置,此时移动必然报错,且会出现部分移动部分未移动,处理起来很麻烦)
2、使用ln -s /data/var /var(此时如果/var这个是目录的话,源目录软链接会出现在目标目录的下一级路径, 即在 /var/ 中会看见一个var的文件夹,如果存在文件则不能执行成功,因此在做软链接时要首先确保目标文件/目录不存在)
3、因为本人操作时,刚好/var目录我怕ln命令不会自动创建(闹个乌龙)手动建了一个,结果就出现了2的情况,于是乎怎么办,建了一个/var/var的软链接,那肯定不行啊,只能删掉了,说干就干cd /var,接着rm -rf /var/哎一个习惯性tab补全,还带了个"/“,再然后就全完了。。。(所以这里又有一个关键点,就是rm命令在删除目录时带不带”/“,经过测试笔者发现如果删除的是目录则带不带效果是相同的,但如果删除的是软链接就会有天差地别,不带”/“删除的是仅仅是软链接本身,带”/"则删除的可就是源数据文件了,如果恰好你还没有备份,恰好还正式环境,那你可以准备好跑路了-。-)
4、其次说一下如果不该发生的还是发生了怎么办,千万不能胡乱操作:
1)建议立刻先使用umount卸载误删文件所在的分区(前提是非/根目录),避免因为磁盘因为其他操作覆盖掉删除的内容,便于数据恢复;
2)这时可以使用lsof|grep deleted查看仍然打开的活动进程,查看到刚刚删除的内容(如果幸运的话),然后通过cd /proc/pid /fd(这里pid就是通过lsof命令获取到的进程id),接着在fd里就能找到已删除的文件,例如删除的是文件3,就cp 3 /恢复的指定目录中 即可;
3)2的方法笔者试了试,也可能是运气不太好只能恢复一小丢丢文件,建议1直接转3,查看自己系统版本uname -a或者lsb_release -a,查看文件系统df -T,笔者文件系统是ext4(普通默认ext3、ext4),因此使用extundelete工具进行文件恢复,这个工具默认是没有安装的需要到官网下载自行安装官网地址,下载完解压打开目录找到直接运行./configure然后make&&make install即可。
接下来怎么使用网上教程多的是,这里说下本人使用结果,因为是第一次碰到这种情况很多人可能都会陷入一个手忙脚乱的地步,这里提醒小伙伴们一定不能慌,慌是解决不了问题的,笔者当时就是处于慌乱之中病急乱投医,结果一顿操作导致磁盘删除的那部分空间被覆写了,当然也就无法恢复了,最后郑重提醒运维小伙伴们在进行重要操作前一定要先进行备份和充足的准备工作。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。