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

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

相关文章

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

每日一练7:简写单词(含链接)

1.链接 简写单词_牛客题霸_牛客网 2.题目 3.代码1(错误经验) #include <iostream>#include <string>using namespace std;int main() {string s;string ret;int count = 0;while(cin >> s)for(auto a : s){if(count == 0){if( a <=

STM32 ADC+DMA导致写FLASH失败

最近用STM32G070系列的ADC+DMA采样时,遇到了一些小坑记录一下; 一、ADC+DMA采样时进入死循环; 解决方法:ADC-dma死循环问题_stm32 adc dma死机-CSDN博客 将ADC的DMA中断调整为最高,且增大ADCHAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, ADC_Buffer_Size); 的ADC_Bu

CentOS下mysql数据库data目录迁移

https://my.oschina.net/u/873762/blog/180388        公司新上线一个资讯网站,独立主机,raid5,lamp架构。由于资讯网是面向小行业,初步估计一两年内访问量压力不大,故,在做服务器系统搭建的时候,只是简单分出一个独立的data区作为数据库和网站程序的专区,其他按照linux的默认分区。apache,mysql,php均使用yum安装(也尝试

如何恢复回收站中已删除/清空的文件

回收站清空后如何恢复已删除的文件?是否可以恢复永久删除的文件?或者最糟糕的是,如果文件直接被删除怎么办?本文将向您展示清空回收站后恢复已删除数据的最佳方法。 回收站清空后如何恢复已删除的文件? “回收站清空后我还能恢复已删除的文件吗?” 答案是肯定的,但是在这种情况下您将需要一个  回收站恢复工具 来从回收站中检索文件: 错误/永久删除回收站或任何数字存储设备中的文件 直接删除的文件/

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录

Detectorn2预训练模型复现:数据准备、训练命令、日志分析与输出目录 在深度学习项目中,目标检测是一项重要的任务。本文将详细介绍如何使用Detectron2进行目标检测模型的复现训练,涵盖训练数据准备、训练命令、训练日志分析、训练指标以及训练输出目录的各个文件及其作用。特别地,我们将演示在训练过程中出现中断后,如何使用 resume 功能继续训练,并将我们复现的模型与Model Zoo中的

短链接算法原理

平时我们在上网的时候,印象最深刻的有一次是短链接的服务。例如:平时在微信上看一个网页的时候,如果我们选择在浏览器打开的时候,会看到很长的URL,我们分享的时候,会看到一个很短URL,这就是本次所说的短链接的应用之一。 长链接示例:https://mp.weixin.qq.com/s?__biz=MzAxNzMwOTQ0NA==&mid=2653355437&idx=1&sn=5901826ea63