递归删除成功的条件
来源:互联网 发布:南师大网络管理系统 编辑:程序博客网 时间:2024/05/21 06:20
递归删除的时候的执行顺序是从下往上,只有子目录和子文件删除成功了,父目录才能删除成功;否则会造成硬盘空间的泄漏。
比如有如下的结构:
现在去递归删除parent目录的时候,从下往上执行,只有a.txt和b.txt都删除成功了,child才能删除成功,只有child删除成功了,parent才能删除成功
假如a.txt和b.txt没有删除成功,就删除了child,那么就没有访问a.txt和b.txt的途径了(即便在其他地方有对a.txt和b.txt的硬链接计数,等到最后a.txt和b.txt上的硬链接计数为1的时候,我们还是失去了对a.txt和b.txt的访问途径)
实际来操作下:
假设当前登录用户是dsl
现在有一个目录parent,dsl对其的操作权限是"rwx"
在parent目录下有一个child目录,在child目录下有a.txt和b.txt文件
现在欲递归删除child目录,那么dsl对child目录的权限得满足什么条件?
1)由以上分析得,用户想要递归删除child目录,那么必须得先能够删除其下的a.txt和b.txt文件,那么用户就得有对child目录的"wx"权限
w权限是删除child目录下子文件或者子目录必须有的权限
x权限是由于删除child目录下子文件或者子目录的时候,必须要更改相应inode节点上的元数据(至少得更改硬链接计数),因此需要x权限来加载inode节点
可见《Linux文件权限再提炼》
2)如果只有对child目录的"wx"权限,那么输入"rm -R child"命令,会提示操作失败
因为此时由于没有对child目录的"r"权限,而不能列出child目录下的子文件和子目录的记录
不过可以通过以下方式达到目标:
"rm child/a.txt;rm child/b.txt;rm child"
3)如果对child目录有"rwx"权限,那么输入"rm -R child"命令,就能直接递归删除child目录了
比如有如下的结构:
现在去递归删除parent目录的时候,从下往上执行,只有a.txt和b.txt都删除成功了,child才能删除成功,只有child删除成功了,parent才能删除成功
假如a.txt和b.txt没有删除成功,就删除了child,那么就没有访问a.txt和b.txt的途径了(即便在其他地方有对a.txt和b.txt的硬链接计数,等到最后a.txt和b.txt上的硬链接计数为1的时候,我们还是失去了对a.txt和b.txt的访问途径)
实际来操作下:
假设当前登录用户是dsl
现在有一个目录parent,dsl对其的操作权限是"rwx"
在parent目录下有一个child目录,在child目录下有a.txt和b.txt文件
现在欲递归删除child目录,那么dsl对child目录的权限得满足什么条件?
1)由以上分析得,用户想要递归删除child目录,那么必须得先能够删除其下的a.txt和b.txt文件,那么用户就得有对child目录的"wx"权限
w权限是删除child目录下子文件或者子目录必须有的权限
x权限是由于删除child目录下子文件或者子目录的时候,必须要更改相应inode节点上的元数据(至少得更改硬链接计数),因此需要x权限来加载inode节点
可见《Linux文件权限再提炼》
2)如果只有对child目录的"wx"权限,那么输入"rm -R child"命令,会提示操作失败
因为此时由于没有对child目录的"r"权限,而不能列出child目录下的子文件和子目录的记录
不过可以通过以下方式达到目标:
"rm child/a.txt;rm child/b.txt;rm child"
3)如果对child目录有"rwx"权限,那么输入"rm -R child"命令,就能直接递归删除child目录了
0 0
- 递归删除成功的条件
- 成功的条件
- 成功的条件
- 成功的条件
- 递归结束的条件
- 递归退出的条件
- 成功的条件-成功并不难
- 编译器递归的中止条件
- 文件夹的递归删除
- 一个成功的项目必胜的条件
- 我眼中的 成功的条件
- 家庭条件不好的青少年如何才能成功
- 转(创业成功的条件)
- 一个成功的游戏需要那些条件?
- 成功实施ERP的基础条件
- 家庭条件不好的青少年如何才能成功
- 成功Rejoin网络的判断条件
- 成功的条件,不只是一个
- 动态规划求解编辑距离
- IE8 jquery ajax获取静态资源报错TypeError 拒绝访问
- 结构体
- 函数的返回类型
- 堪称最好的A*算法
- 递归删除成功的条件
- Android:自定义View实现随滑动由箭头变对勾的指示按钮
- Android消息处理机制—— Looper, Handler, Message
- 与编程相关的计算机硬件
- Spring获取Web应用根目录的方法
- java基础之其他类
- 搭建Nginx+Java环境(转)
- Java中的数组
- Linux系统部署项目常用命令(一)