文件查找、壓縮、歸檔

一、文件查找

非實時查找數據庫查找)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.www58058.com/61086

(0)
lyxlyx
上一篇 2016-11-27
下一篇 2016-11-27

相關推薦

  • Linux初探

    1.計算機組成: CPU:運算器(指令集)、控制器、寄存器、緩存; 存儲器:內存,RAM; Input:下指令,提供數據; Ouput:輸出數據加工的結果 一般來說,從磁盤中讀取程序和數據放到內存中排隊,由cpu從內存中讀取執行。由于cpu處理速度遠大于磁盤的I/O速度,因此引入緩存。在計算機中有緩存為王這個說法。 2.操作系統的背景: 1.統一規范 2.由…

    Linux干貨 2016-10-30
  • php-fpm實驗

    #yum install marisdb-server #vim /etc/my.cnf.d/server.cnf [mysqld]         skip_name_resolve=ON         innodb_file_per_…

    Linux干貨 2017-06-08
  • N21_第6周_vim

    N21_第6周_vim 請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符; 3、刪除/tmp/…

    Linux干貨 2016-08-15
  • MAN手冊各章節功能

         1.普通命令     2.系統調用 (方便查到調用的函數,需加的頭文件)     3.庫函數     4.特殊文件 例:/dev下的各種設備文件     5.文件的格式    &n…

    Linux干貨 2016-10-18
  • 常用的MySQL數據庫備份

    常用的MySQL數據庫備份方式 前言 為什么需要備份數據? 數據的備份類型 MySQL備份數據的方式 備份需要考慮的問題 設計合適的備份策略 實戰演練 使用cp進行備份 使用mysqldump+復制BINARY LOG備份 使用lvm2快照備份數據 使用Xtrabackup備份 總結 前言 我們試著想一想, 在生產環境中什么最重要?如果我們服務器的硬件壞了可…

    2016-10-01
  • 馬哥教育網絡21期+第三周練習博客

    馬哥教育網絡21期+第三周練習博客 一.回顧第二周的學習內容 1,Linux上的文件管理類的命令: mkdir:創建目錄: [root@localhost ~]# mkdir /tmp/fstab2222 [root@localhost ~]# ls -l /tmp/ total&nbsp…

    Linux干貨 2016-07-16
欧美性久久久久