从inode角度描述cp,mv,rm行为
来源:互联网 发布:知的草书写法 编辑:程序博客网 时间:2024/05/01 18:24
1 概述
我们常以为目录是个容器,放着目录和文件。实际上,目录是个映射表。人使用文件名来引用文件,计算机使用inode号码来引用文件。而目录则是文件名和inode号码之间的映射表。
2 cp和inode
用法:
cp [选项] 文件 [文件2|文件3...] 目标 选项: -i 在覆盖文件前询问 -r 递归地复制整个目录树 -p 保留权限,所有者,和时间戳 -a -r和-p的结合
cp命令必须总是至少有两个参数,如果给出的参数超过两个,除了最后一个参数以外的所有参数都会被解系成源文件
目标影响cp的行为:
如果目标是目录,复制后的文件就会被放置其中
如果目标是文件,复制后的文件就会覆盖目标
如果目标不存在,复制后的文件就会被重命名为目标名
inode角度:
1)分配一个未用的inode号码,在inode表中添加一个新项目
2)在目录映射表创建一行,关联文件名和inode号码
3 mv和inode
mv的行为和cp相同,除了mv时,源文件会消失
当一个文件mv后,构成这个文件的实际内容,不管是inode项目还是硬盘上的数据,都没有被转移。被转移的仅仅是目录映射表。
两种情况:
1)目标和原文件在同一个文件系统
a)在目录映射表新建一行
b)删除带有源文件名的原有目录行
2)如果目标是不同的文件系统
mv的行为就是复制和删除
案例:
[root@think water]# ll -i w3496568 -rw-r--r-- 1 root root 17 09-25 15:12 w[root@think water]# mv w /home/water[root@think water]# cd /home/water[root@think water]# ll -i w3496568 -rw-r--r-- 1 root root 17 09-25 15:12 w
inode号码仍就一样。文件系统上的数据没转移,inode表没变,只不过其上的时间戳被更新
4 rm和inode
rm -r 删除目录及其内容,但每删一样之前都会询问
rm -f 删除目录及其内容,但每删一样之前不会询问
inode分析:
1)递减链接计数,从而释放inode号码,这个inode号码可以被重用
2)把数据块挂到可用空间列表
3)删除目录映射表中的相关行
但是底层数据实际上没有被删除,只是当数据块被另一个文件使用时,原来的数据就会被覆盖
- 从inode角度描述cp,mv,rm行为
- cp rm mv
- cp,mv,rm
- rm,cp,mv
- Linux常用命令:cp,mv,rm
- linux command: cp, mv, rm
- linux笔记 cp rm mv
- cp,rm,mv,mkdir, cd
- linux的cp,rm,mv
- 复制、移动和删除:cp, rm, mv
- rm mv cp pwd stty命令
- linux cp、mv、rm 强制覆盖
- Linux rm,cp,mv命令详解
- ubuntu mkdir , cp , mv,rm 命令
- Linux文件:ls、cp、mv、rm
- 复制、删除与移动: cp, rm, mv
- mkdir , rmdir ,rm,cp ,mv的使用方法,
- linux命令: touch, mkdir, cp, mv, rm
- MAX3421E版本1和2主机OUT传输
- Autotools上手指南Autotools上手指南1——autoconf基本思想
- SIMD和多核心编程时的一些总结。
- js,java变量使用
- oracle 10g新建索引ORA-25150 不允许对区参数执行
- 从inode角度描述cp,mv,rm行为
- opengl glsl 深度计算
- 七夕在相爱人的眼中也是普通的一天 。
- 线程安全
- ural 1713
- 辞职申请书[转载]
- oracle两张表求并集,交集部分新建字段指明标志位
- PreparedStatement 中的setString
- GNU Autotools 使用(合集)