记一次软链接删除导致的目录清空事故

2024-04-16 10:18

本文主要是介绍记一次软链接删除导致的目录清空事故,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

起因

我当前目录下有一些目录和文件:

root@master ~/test# ll
total 4.0K
drwxr-xr-x. 7 root root 203 Nov  9 08:55 test/
-rwxr-xr-x. 1 root root   8 Nov  9 08:56 test.sh*

我本来想给目录下的 test 目录新建一个软链接:

ln -sf /root/test/test dir_softlink

经过

但是操作的时候少写(阴差阳错)了一个 test 层级,如下:(结果变成了给当前目录新建了一个软链接):

ln -sf /root/test dir_softlink
root@master ~/test# ll
total 4.0K
lrwxrwxrwx. 1 root root  10 Nov  9 09:00 dir_softlink -> /root/test/
drwxr-xr-x. 7 root root 203 Nov  9 08:55 test/
-rwxr-xr-x. 1 root root   8 Nov  9 08:56 test.sh*

我想着,既然软链接弄错了,那我就把这个软链接删除,重新创建一个就好(到这步其实也没啥大问题)。于是乎先是用 rm 去删除软链接(至少我本意只是想删除这个软链接),结果竟然删不掉(其实也怪我没有仔细看这块的错误提示,多看一眼的话,后边也没那么胆大妄为了):

oot@master ~/test# rm dir_softlink/
rm: cannot remove ‘dir_softlink/’: Is a directory

毕竟,目录和软链接的删除提示是不一样的:

[root@master test]# rm dir_softlink/
rm: cannot remove ‘dir_softlink/’: Is a directory
[root@master test]# rm dir_softlink
rm: remove symbolic link ‘dir_softlink’? y

然而,我却是先想到了 rm -rf 这个惊天地,泣鬼神的命令(哎!先扇自己一巴掌———— rm -rf 不相信眼泪。。 

root@master ~/test# rm -rf dir_softlink/

后果

当我执行完删除命令以后,再用 ll 命令查看目录内容的时候,我知道!我闯祸了 -____-"(噗!再扇自己一巴掌):

root@master ~/test# ll
total 0

分析

其实,罪魁祸首自然就是软链接删除的时候多添加了一个“ / ” 符号的缘故,如果不加这个符号的话,只删除目录的软链接是绝对没有问题的。 

root@master ~/test# ll
total 4.0K
drwxr-xr-x. 7 root root 203 Nov  9 09:08 test/
-rwxr-xr-x. 1 root root   8 Nov  9 09:08 test.sh*
root@master ~/test# ln -sf /root/test dir_softlink
root@master ~/test# rm dir_softlink/
rm: cannot remove ‘dir_softlink/’: Is a directory
root@master ~/test# ll
total 4.0K
lrwxrwxrwx. 1 root root  10 Nov  9 09:08 dir_softlink -> /root/test/
drwxr-xr-x. 7 root root 203 Nov  9 09:08 test/
-rwxr-xr-x. 1 root root   8 Nov  9 09:08 test.sh*
root@master ~/test# rm dir_softlink
root@master ~/test# ll
total 4.0K
drwxr-xr-x. 7 root root 203 Nov  9 09:08 test/
-rwxr-xr-x. 1 root root   8 Nov  9 09:08 test.sh*

总结

在删除软连接的目录时,如果目录后面不带 "/" ,则只删除软链接文件(也即通常所指的快捷方式),源目录结构不便。

在删除软连接的目录时,如果目录后面带 "/" ,则删除软连接对应的源目录下的所有文件,而软连接目录不删除(像我上面这种的情况,软链接包含在了要删除的目录里边,当然也一并删除了)。

拷贝等操作也类似

所以:事关删除事,万般皆小心!!!

这篇关于记一次软链接删除导致的目录清空事故的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/908511

相关文章

使用Python快速实现链接转word文档

《使用Python快速实现链接转word文档》这篇文章主要为大家详细介绍了如何使用Python快速实现链接转word文档功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 演示代码展示from newspaper import Articlefrom docx import

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

Python判断for循环最后一次的6种方法

《Python判断for循环最后一次的6种方法》在Python中,通常我们不会直接判断for循环是否正在执行最后一次迭代,因为Python的for循环是基于可迭代对象的,它不知道也不关心迭代的内部状态... 目录1.使用enuhttp://www.chinasem.cnmerate()和len()来判断for

C#实现添加/替换/提取或删除Excel中的图片

《C#实现添加/替换/提取或删除Excel中的图片》在Excel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更加美观,下面我们来看看如何在C#中实现添加/替换/提取或删除E... 在Excandroidel中插入与数据相关的图片,能将关键数据或信息以更直观的方式呈现出来,使文档更

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Git中恢复已删除分支的几种方法

《Git中恢复已删除分支的几种方法》:本文主要介绍在Git中恢复已删除分支的几种方法,包括查找提交记录、恢复分支、推送恢复的分支等步骤,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录1. 恢复本地删除的分支场景方法2. 恢复远程删除的分支场景方法3. 恢复未推送的本地删除分支场景方法4. 恢复

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超