来源:第7章
笔记:
- 文件查找:
find和locate:
locate:系统在空闲时自动构建数据库(周期性任务);
updatedb:手动更新数据库,大量消耗系统资源,线上系统谨慎使用;
locate keyword
数据库查找
非实时查找
模糊查找
查找速度快
find:遍历指定路径下的文件系统完成查找
实时查找
查找速度慢
精确查找
find [option]..[查找路径] [查找条件] [查找动作]
查找条件:
根据文件或目录名查找:
-name:支持使用glob;
-iname:忽略大小写,支持glob;
-regex “pattern”:按模式查找;
根据属主、属组查找:
-user :
-group:
-uid:
-gid:
-nouser:没有属主的文件;
-nogroup:没有属组的文件;
根据文件类型查找:
-f,-d,-l,等
组合条件查找:
-a,-o,!,-not
根据文件大小查找:-size 【+|1】#【k|G|M】
-#:表示(0,#-1]的大小范围;
#:表示(#-1,#]的大小范围;
+#:表示(#,oo)的大小范围;
Tip:不带单位时,据测好像1表示512byte;
根据时间戳查找:
单位为天:
-atime,-ctime,-mtime
单位为分钟:
-amin,-cmin,-mmin
#:[#,#+1)
-#:(0,#)
+#:[#+1,oo)
Tip:和大小的查找稍微不同:
#为2,时间表示区间[2-3)不满3,大小表示(1-2]不满2;
#为-2,时间表示区间(0,2)不满2,大小表示(0,2)不满2;
#为+2,时间表示区间[3,oo)等于大于3,大小表示[2,oo)等于大于2;
根据权限查找:-perm 【/|-】mode,0表示该位置不作要求,+被废弃
mode:精确匹配每一位权限;
/mode:文件或目录至少有一位权限匹配给定的mode;
-mode:文件或目录必须包含给定mode的全部权限;
处理动作:
-print:默认的动作,显示至屏幕;
-ls:类似对查找到的文件执行‘ls -l’操作
-delete:删除查找到的文件;
-fls /path/to/somewhere:将查找文件的长格式信息保存至指定文件;
-ok command {} \;:对查找到的文件执行后面的命令;需要确认
-exec command {} \;:同上,不需确认;
Note:find查询是先完成查找然后将所有结果一次性传递给后面的命令,
部分命令无法接受过多参数时会崩溃,以下方法可避免:
find | xargs command
Note:{},表示引用find查找结果的一个对象;
例,find -nouser -exec mv {} {}.old \;
-压缩和归档:
文件压缩 :gzip,bzip2,xz,zip
gzip、gunzip、zcat:
gzip:
Usage:gzip 【options】file。。。
Explain:只能压缩文件,目标为目录时使用-r选项递归单独压缩其下的每个文件;
默认删除原文件,仅保留压缩文件;
压缩文件默认格式为*.gz;
压缩比较小,压缩速度较快;
-# :指定压缩比【1-9】;默认为6
-d:解压缩文件,文件名必须以.gz, -gz, .z, -z, _z,.Z结尾;
-c:压缩或解压缩文件至标准输出
e,g:gzip -c sfile > dfile ,压缩sfile至dfile,并保留sfile;
gunzip -c dfile > sfile,解压缩dfile至sfile,并保留dfile;
-f:强制压缩或解压缩;(当压缩或解压缩文件已存在时不提示是否覆盖);
-l:显示文件压缩前后大小和压缩比率;
-q:忽略警告信息;
-r:目标为目录时,递归单独压缩或解压缩目录下每个文件;
-S .suf:压缩时以指定后缀.suf代替默认后缀.gz;
-t:测试压缩文件的完整性;
-v:压缩或解压缩时显示压缩前后文件名和压缩比;
example:
重新压缩:
gzip -cd old.zip | gzip > new.zip
gunzip:
解压缩文件,同 ‘gzip -d’,文件名后缀必须符合要求;
选项同上;
zcat:
不解压缩gzip压缩文件,而查看其内容;
选项同上;
bzip2、bunzip2、bzcat、bzip2recover:
bzip2:
Usage:bzip2 【options】file1 。。。
Explain:
1、较gzip更高压缩比,用法大多相同;
2、保留文件元数据信息;
3、默认后缀为.bz;默认不自动覆盖已有文件;
-c:压缩或解压缩至标准输出;
-d:解压缩;
-f:强制压缩或解压缩,覆盖已有文件;
-q:忽略不重要的警告;
-k:保留原文件;
-s:降低压缩解压缩速度,减少内存用量;
-v:解压或压缩时显示详细信息;
bunzip2:
解压缩,同‘bzip2 -d’
file.bz 解压为 file
file.bz2 解压为 file
file.tbz 解压为 file.tar
file.tbz2 解压为 file.tar
file 解压为 file.out
bzip2recover:
恢复损坏bzip2压缩文件中未损坏的数据块文件;
bzcat:
不解压bzip2压缩文件查看其内容;
xz、unxz、xzcat:
xz:
Usage:xz 【options】file1.。。。
Explain:
1、较gzip,bzip2更大压缩比,更多的cpu时钟消耗;用法大多同上;
2、默认删除原文件,默认后缀.xz;
-t:测试文件完整性;
-f:强制;
-q:忽略;
-d:解压缩;
-c:至标准输出;
-k:保留原文件;
-S:压缩时修改默认后缀
-#:指定压缩级别;
-T #:指定压缩线程数;
-v:详细信息
unxz:
解压缩,同‘xz -d’
file.xz 解压为file
file.lzma 解压为file
file.txz 解压为file.tar
file.tlz 解压为file.tar
xzcat:
不解压xz压缩文件而查看其内容;
zip:
较早期的一款打包和压缩工具;目标可以是目录或文件;
Usage:zip 【options】archive file1 file2 。。。
-d :删除zip压缩包中的指定文件;
-e:加密打包压缩文件;
-r:对目录递归处理;
-#:压缩率;
-y:直接保存符号链接,而非原文件;
unzip:解压缩;
文件归档:tar
Explain:
1、文件或目录归档工具,可结合压缩工具(gzip,bzip2,xz)使用;
2、保留原文件;
Usage:
-c:创建; -r:附加;
-t:列出; -x:展开;
-h:存储原文件而非软链接;
-f:指定归档名;
-k:展开归档时不覆盖(tar展开归档时默认直接覆盖已有文件或目录);
-C:指定归档存放目录;
-z:使用gzip压缩后归档或解压后展开归档;
-j:使用bzip2压缩后归档或解压后展开归档;
-J:使用xz压缩后归档或解压后展开后归档;
1、创建归档:
tar -cf file.tar file/dir;
2、展开归档:
tar xf file.tar ;
3、创建gzip压缩归档:
tar zcf file.tar.gz file/dir;
4、xz解压缩并展开归档:
tar Jxf fiel.tar.xz;
5、tar解压缩时不依据文件后缀名而自行判断文件类型,-z,-j,-J选项可省略,文件名可随意;
练习:
1、查找/var目录下属于root,且属组为mail的所有文件或目录;
find /var -user root -a -group mail
2、查找/usr目录下不属于root、bin或hadoop的所有文件或目录;
find /usr -not \( -user root -o -user bin -o -user hadoop \)
3、查找/etc目录下最近一周内其内容修改过,同时属主不为root,也不是hadoop的文件或目录;
find /etc -mtime -7 -not \( -user root -o -user hadoop \)
4、查找当前系统上没有属主或属组,且最近一周内被访问过的文件或目录;
find / -atime -7 -a \( -nouser -o -nogroup\)
5、查找/etc目录下大于1M且类型为普通文件或目录;
find /etc -size +1M \( -type f -o -type d\)
6、查找/etc目录下所有用户都没有写权限的文件;
find /etc -not -perm /222
7、查找/etc目录下至少有一类用户没有执行权限的文件;
find /etc/ -not -perm -111
8、查找/etc/init.d目录下,所有用户都有执行权限,且其他用户有写权限的文件;
find /etc/init.d -perm -111 -perm -002或
find /etc/init.d -perm -113
9、查找资料,了解uefi、gpt
Tip:
1、扇区和块:
扇区有物理扇区和逻辑扇区,扇区一般指物理扇区,由硬件厂商生产时划分好的磁盘的最小物理存
储单位(操作对象),大小固定为512Bytes(也生产有少数扇区大小为4k的磁盘);块属于文件
系统级别的最小存储单位,逻辑概念,大小可调整。
2、block和磁盘IO的关系:
参考:https://www.cnblogs.com/muahao/p/6596545.html
3、磁盘和文件系统单篇开讲:
参考:http://man.linuxde.net/sub/%E7%A3%81%E7%9B%98%E7%AE%A1%E7%90%86
https://www.toolfk.com/tool-find-linux
思考:
1、据google,一个1K的块可以存储128bytes大小的inode8个,即每512bytes的扇区会存储4个inode;
思考:查找文件时,先找到目录文件所在block——>查询条目得到此文件的inode号——>根据文件
系统的内在机制查找对此inode号对应的物理扇区地址——>读取数据——>查找该文件的block号
——>读取对应物理扇区上的数据返回给用户;
如果多个inode对应同一个物理磁盘扇区,文件系统可用区分此扇区中哪段数据对应哪个inode吗?
一个block是不能同时属于多个文件的。
2、centos可以对分区进行分区操作,有何意义?