inode,软硬链接
如何查看inode
ll -di /boot / /app
查看文件和文件夹的inode号
df -i
查看挂载点文件夹的inode号
做inode增长实验
创建60万个文件的方法1(效率不高):for i in {1..600000}; do touch file$1; echo file$i is created;done
创建60万个文件的方法2(效率高):echo file{1..600000} | touch
删除前20万个文件:echo file{1..200000} |args rm
在创建的过程中,可以另开一个窗口,用下面命令,每隔1秒运行df -hi命令,可以查看inode的增长情况:watch -n1 df -hi
tips:文件粉碎工具
shred
:shred -uzvn10 FILE
重复随机写入10次覆盖源文件,然后最后删除此文件。
硬链接、软链接
软链接就相当于Windows的快捷方式,删掉源文件,快捷方式和就失效了,软链接就找不到源文件了。
硬链接相当于多个链接指向同一份数据存储区域,每多一个硬链接,硬链接数+1,如果一个文件,有n个硬链接,删除n-1个硬链接,源文件还在,直到删除所有硬链接,才会删除源文件。
1. 复制(
cp
)在复制过程中,复制软连接相当于复制了快捷方式,速度很快,而且可以跨分区。
在复制过程中,复制硬链接分为两种情形:
- 在同一分区复制,相当于多创建一个链接指向原数据存储位置,速度很快。
- 在不同分区复制,相当于把原来分区的数据拷贝过去存储,同时创建一个指向新数据区域的指针,速度比较慢。
2. 删除(
rm
)
在删除过程中,删除软连接相当于删除了快捷方式,源文件还在。
在删除过程中,删除硬连接相当于删除了一个到数据块的指针,,除非删除所有硬链接文件,源文件才删除。3. 移动(
mv
)
在移动过程中,移动软连接相当于移动了快捷方式而已。
在移动过程中,移动硬连接分为两种情形:
- 在同一分区移动,相当于创建了一个新inode,指向数据块,并把原来的inode删掉
- 在不同分区移动,要把数据块复制到新分区,然后在新分区创建新的inode号指向新的数据块,并且把原来分区的inode号和数据块都删掉。
4. 软连接支持对目录创建,硬链接不支持
ln dir1 dir2
不成功
ln /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/ens33
成功tips1:当我们看到一个磁盘,使用空间没满,但是却提示”no space left on device”,那可能是inode用完了。
tips2:如何删除数量很多的文件(比如前面做实验创建的60万个文件。):
技巧是使用管道|
和xargs
,管道|
后面会讲,管道是指的是前面命令的输出作为后面命令的输入。xargs
,前面命令多个输出,可以用xargs
一个个的传给后面的命令,而不是已下载全传给后面命令,可以解决参数太长的情况。
ls | xargs rm
5. 如何写软连接相对路径
软连接写相对路径,要根据软连接文件的路径来写。
例如要在把/etc/issue 软连接到/app/d1/d2/d3/ilink
1 ln -s ../../../../../etc/issue /app/d1/d1/d3/ilink