一、文件查找
非實時查找(數據庫查找)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