文件查找、压缩、归档

一、文件查找

非实时查找(数据库查找)locate;实时查找find

locate:从系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db查找,但是依赖于事先构建的索引;

索引的构建是在系统较为空闲时自动进行,管理员手动的更新数据库(updatedb),得用updatedb命令跟新数据库,才能快速查找,也要根据权限搜索;

索引构建过程需要遍历整个根文件系统,极其消耗资源;

1.1 locate

locate搜索特点:查找速度快;模糊查找;非实时查找;搜索的文件的全路径,不仅仅是文件名

可能只搜索用户具备读取和执行权限的目录

locate KEYWORD

v  -i 执行区分大小写的搜索 ;  -n N 只列举前N 个匹配项目  ;-r:支持正则表达式

v locate foo

• 搜索名称或路径中带有“foo ”的文件

v locate -r ‘\.foo$’

• 使用Regex 来搜索以“.foo ”结尾的文件

1.2 find 查找条件

find: 实时查找工具,通过遍历指定路径完成文件查找;

v   find 工作特点:查找速度略慢;精确查找;实时查找; 可能只搜索用户具备读取和执行权限的目录

find option 查找路径|查找条件|处理动作   (全盘搜索影响磁盘性能)

查找路径:指定具体目标路径;默认为当前目录;处理动作:对符合条件的文件做操作,默认输出至屏幕

查找条件:指定的查找标准,可对文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件。

1.2.1根据文件名和inode查找

-name " 文件名称" :支持使用通配符 *, ?, [], [^]等  find  /  -name “*.txt”  ; find  /var  –name “*log*”

find -name snow.png  ( 搜索名为snow.png)

-iname " 文件名称" :不区分字母大小写 ; -inum n 按inode 号查找

find -iname snow.png  (不分大小写地搜索名为snow.png 、Snow.png、SNOW.PNG)

-samefile name 相同inode 号的文件 ;     -links n 链接数为n 的文件

-regex "PATTERN" :以PATTERN 匹配整个文件路径字符串,而不仅仅是文件名称

1.2.2根据属主、属组查找 

find  -user  joe  -group  joe(搜索被用户joe  以及组群joe)

-user USERNAME :查找属主为指定用户(UID) 的文件  ;-group GRPNAME:  查找属组为指定组(GID) 的文件

-uid UserID :查找属主为指定的UID 号的文件   ;     -gid GroupID :查找属组为指定的GID 号的文件

-nouser :查找没有属主的文件    ;                 -nogroup:查找没有属组的文件

1.2.3 根据文件类型查找 

-type TYPE:    f:  普通文件 ;d:  目录文件; l:  符号链接文件; s :套接字文件

b:  块设备文件; c:  字符设备文件 ; p:  管道文件

find  /home  –type  d  -ls (找到家目录下的目录文件,并列举出来)

1.2.4 组合条件

与:-a  ;  或:-o  ;  非:-not, !

v   (非 P)  或 (非 Q) =  非(P 且 Q)    ;    (非 P) 且 (非 Q) =  非(P 或 Q)

v    !A  -a  !B = !(A  -o  B)     ;          !A  -o  !B = !(A  -a  B)

find  -user  joe  -not  -group  joe    ;   find  -user  joe  -o  -user  jane

find  -not \( -user  joe  -o  -user  jane \)     ;find  /  -user  joe  -o  -uid  500

1.2.4.1find示例

      找出/tmp 目录下,属主不是root ,且 文件名 不以f 开头的 文件

find  /tmp  \( -not -user root -a -not -name 'f*' \)  –ls     ;

find  /tmp  -not \( -user root -o -name 'f*' \)  –ls

v   排除目录示例:查找/etc/ 下,除/etc/sane.d 目录的其它所有.conf 后缀的文件

find  /etc  -path  ‘/etc/sane.d’  -a  –prune  -o  -name  “*.conf”  -print

1.2.5根据文件大小来查找

-size  [ +|- ]  #UNIT常用单位:k, M, G

#UNIT: (#-1, #]  ;如:6k  表示(5k,6k]      -#UNIT :[0,#-1]  ;如:-6k  表示[0,5k]

+#UNIT :(#, ∞ ) ; 如:+6k  表示(6k ,∞)

find /var  -size +1M -a -size -10M  | xargs ls -lh

1.2.6根据时间戳

以“天”为单位;-atime [+|-]#    ;#:[#,#+1)    ;+#: [#+1, ∞ ]    ;-#: [0,#)

-mtime         ;-ctime

以“分钟”为单位:-amin   ;-mmin    ;-cmin

1.2.7 根据权限查找

-perm  [/|-]  MODE   ;mode:精确权限匹配

/MODE (+MODE):任何一类(u,g,o)对象的权限中只要能一位匹配即可;  或的关系

-MODE:每一类对象都必须同时拥有指定权限;  与的关系 ,没有即为0表示不关注

find  -perm  755  :会匹配权限模式恰好是755 的文件

只要当任意人有写权限时,find -perm +222 就会匹配;只有当每个人都有写权限时,find -perm -222 才会匹配;只有当其它人(other )有写权限时,find -perm -002才会匹配处理动作:

-print :默认的处理动作,显示至屏幕;   -ls :类似于对查找到的文件执行“ls -l” 命令

v -delete :删除查找到的文件;     -fls file :查找到的所有文件的长格式信息保存至指定文件中

v    -ok COMMAND {} \;  对查找到的每个文件执行由COMMAND 指定的命令;

1.2.7.1 find示例

    对于每个文件执行命令之前,都会交互式要求用户确认

例如:find  /tmp -ctime +3 -user  joe  -ok  rm  {}  \(提示删除存在时间超过3天以上的joe 的临时文件)

-exec COMMAND {} \;  对查找到的每个文件执行由COMMAND 指定的命令

v    {}: 用于引用查找到的文件名称自身

v   find 传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令

例如:v find  -name  “*.conf”  -exec  cp  {}  {}.orig  \  (备份配置文件,添加.orig 这个扩展名)

find  ~  -perm  -002  -exec  chmod o-w  {}  \ (在你的主目录中寻找可被其它用户写入的文件)

find  /data  –type  f  -perm  644  -name “*.sh”  –exec  chmod 755  {}  \

(在/data下查找权限为644以.sh结尾的普通文件改文件为权限755)

1.3参数代换

    xargs 用于产生某个命令的参数

xargs可以读入stdin的数据,并且以空格符或回车符将stdin的数据分隔成为arguments

v         注意:文件名或者是其他意义的名词内含有空格符的情况

有些命令不能接受过多参数,命令执行可能会失败,xargs可以解决

v  示例:find | xargs COMMAND   ;    find  /sbin  -perm  +7000  |  xargs  ls  -l

二、压缩、解压缩

2.1 compress /uncompress

compress [-dfvcVr] [-b maxbits] [file …]

-d:  解压缩,相当于  ;-c:  结果输出至标准输出, 不删除原文件  ;-v:  显示详情

v uncompress 解压缩:zcat file.Z >file

2.2 gzip/gunzip

gzip [OPTION]… FILE …

–d: 解压缩,相当gunzip  ;-c:  将压缩或解压缩的结果输出至标准  -#:1-9 ,指定压缩比,值越大压缩比越大

v zcat :不显式解压缩的前提下查看文本文件内容                             默认为6

v    2.1实例: 

   gzip -c messages >messages.gz

   gzip -c -d messages.gz > messages

zcat messages.gz > messages

2.3 bzip2  

bzip2 [OPTION]… FILE …

-k: keep,  保留原文件  ;-d :解压缩   ;-# :1-9 ,压缩比,默认为6

v  bzcat :不显式解压缩的前提下查看

2.4 xz  

xz [OPTION]… FILE …

-k: keep,  保留 原文件   ;-d :解压缩   ;-# :1-9 ,压缩比,默认为 为6

v        xzcat:  不显式解压缩的前提下查看

xz:互联网上的新软件一般都用此压缩工具 ,压缩比大,但是压缩的时间也长,解压缩耗时也久一些

2.5 zip

虽然压缩比较差,但是能与windows兼容

打包压缩:zip –r sysconfig sysconfig/     ;  解包解压缩:unzip sysconfig.zip

cat  /var/log/messages  |  zip  message  –

unzip  -p  message > message

三、归档工具 

3.1 tar工具 

(现在企业里面常用磁带归档工具 、打包工具)

–c:创建新的档案文件(打包) ;-t:列出打包内容 ;-x:从档案文件中释放文件(拆包)

-f:使用的归档名,立即接档名,不加参数 ; -p:使用原文件的属性 ;-v:压缩过程可见

-r:追加      -zcvf :打包压缩,,但是不会破坏原来的文件,会把目录中的/删除

(1)  创建归档    tar -c -f / PATH/TO/SOMEFILE .tar   FILE… 指定解压目录file

(2)  追加文件至归档:  注:不支持对压缩文件追加    tar -r -f /PATH/TO/SOMEFILE.tar FILE…

(3)  查看归档文件中的文件列表    tar -t -f  /PATH/TO/SOMEFILE .tar

(4)  展开归档(编译时用到)  tar -x -f  /PATH/TO/SOMEFILE .tar  ; tar -x -f  /PATH/TO/SOMEFILE .tar  -C  /PATH/

(5)  结合压缩工具实现:归档并压缩     -j: bzip2, -z: gzip, -J: xz    

-T 选项指定输入文件;-X 选项指定包含要排除的文件列表

tar  zcvf mybackup.tgz  -T  /root/includefilelist  –X  /root/excludefilelist

3.2 spilt分割打包文件

分割大的 tar 文件为多份小文件:

split –b 1M -d Size tar-file-name prefix-name  ;split –b 1M –d mybackup.tgz mybackup-parts

     合并:cat mybackup-parts* > mybackup.tgz

3.3 cpio复制到文件

cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。

cpio [ 选项] >  文件名或者设备名

v    cpio [ 选项] <  文件名或者设备名

v  选项:-o  将文件拷贝打包成文件或者将文件输出到设备上

-i  解包,将打包文件解压或将设备上的备份还原到系统

-t  预览,查看文件内容或者输出到设备上的文件内容

-v  显示打包过程中的文件名称。

-d  解包生成目录,在cpio 还原时,自动的建立目录

将etc 目录备份:find ./etc -print |cpio -ov >etc.cpio

v  内容预览:cpio –tv < etc.cpio

v  要解包文件:cpio –iv <etc.cpio  ;cpio –idv < etc.cpio

原创文章,作者:lyx,如若转载,请注明出处:http://www.178linux.com/61086

赞 (0)
lyxlyx
上一篇 2016-11-27 20:34
下一篇 2016-11-27 21:05

相关推荐

  • ☞rsyslog

    rsyslog 概述 rsyslog支持的facility与priority facility:设施、信道: priority:级别 rsyslog程序 配置文件 配置日志记录级别和路径 配置日志记录在远程rsyslog server rsyslog server端 rsyslog client端 测试远程服务器是否记录日志 rsyslog记录在MySQL中…

    Linux干货 2016-10-16
  • 高效运维最佳实践(03):Redis集群技术及Codis实践

    前言 诚如开篇文章所言,高效运维包括管理的专业化和技术的专业化。前两篇我们主要在说些管理相关的内容,本篇说一下技术专业化。希望读者朋友们能适应这个转换,谢谢。 互联网早在几年前就已进入Web 2.0时代,对后台支撑能力的要求,提高了几十倍甚至几百倍。在这个演化过程中,缓存系统扮演了举足轻重的角色。 运维进化到今天,已经不是重复造轮子的时代。所以,我们在架构优…

    Linux干货 2015-04-03
  • CentOS6/7下不关机识别新添加的scsi硬盘

    1)需求说明 在虚拟机中,我们在服务器开机的状态下添加新的磁盘或者说从存储上映射某个LUN区域给服务器,不重启系统的情况下,往往不能够直接识别到磁盘,在遇到这种情况的时候,我们可以让系统重新扫描让服务器重新识别到磁盘。 2)处理步骤 下面看一下在系统不重启的情况,如何让系统认识新的磁盘,并能对其分区与格式化 1、在开机状态下新增磁盘 2、执行下面的命令 ec…

    Linux干货 2016-07-22
  • 马哥linux0801课程内容

    0801课堂笔记 硬链接和软链接最根本的区别 硬链接是同一个文件,而软链接是两个文件 软链接查询到文件的软链接个数.比较麻烦. 而硬链接的个数可以通过链接数就可以看到. 硬链接不能跨分区,而软链接可以跨分区 (因为每个分区都有自己的inode表) ln 创建硬链接 ln–s 创建软链接(软链接如果使用相对路径,对象是相对软链接的路径,而硬…

    Linux干货 2016-08-04
  • CentOS安装本地 YUM源 产生的问题和解决过程

    本人刚刚踏入Linux的神秘殿堂就被如何安装软件这样的问题难倒了,经过Google大神的指点,终于找到了如何配置YUM源的方法,其中也不是一帆风顺,也产生了一些小问题,这些都是基础知识,希望能够帮到刚刚学习Linux的朋友。     由于VMware的终端不好用,所以想换成XShell,过程中又需要配置网络属性,桥接到…

    Linux干货 2016-01-05
  • 描述计算机的组成及其功能

    CPU:计算器,控制器,寄存器内存输入输出设备

    Linux干货 2016-08-15