查找find及壓縮與解壓

find 

根據時間戳:
以“天”為單位;
              -atime [+|-]#, 
               #: [#,#+1)   2 那就是大于等于二天小于三天
              +#: [#+1,∞] +4 大于等于五天及五天以上
              -#: [0,#)    -3 0至三天以內的不包含3天  #find /etc/ -atime -1  (passwd magedu)

              -mtime 
              -ctime
       以“分鐘”為單位: 
              -amin   #find /etc/ -amin -1
              -mmin 
              -cmin

     -perm
      mode:精確權限匹配  # find -perm 755
      +mode[/mode] 任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系,+ 從centos7開始淘汰
              # find -perm /444   # find -perm +111
        -mode   每一類對象都必須同時擁有指定權限,與關系0 表示不關注 # find -perm -777
              #find  -perm /444 任何一位有4 就可以篩選出 (還可以表示為+444)
              #fing  -perm /044 組和其他人4有就可以篩選出(還可以表示為+044)
              #find  -perm /400 只要user上有4就可以篩選出(還可以表示為+400)
              #find  -perm -200 user上必須有2
              #find  -perm -210 user上必須有2,組上必須有1
              #find  -perm -666 每位權限上必須有6,但是不包括766
              查找find及壓縮與解壓
查找find及壓縮與解壓
    -print 默認的處理動作,顯示至屏幕 # find -perm -777  -print只顯示文件路徑
    -delete 直接刪除所查找到的文件,不詢問。 # find -perm /111 -delete(刪除滿足條件的文件)
    -ls 長列出所查找到的文件 ,顯示權限等 # find -perm /777 -ls
    -fls file 將查找到的文件長列出導入到指定文件。
    > file 
      #find /etc/ -regex “..conf$” -fls /app/find.txt不包含錯誤信息
      #less /app/find.txt
      也可以如下:
      #find /etc/ -regex “.
.conf$” >/app/find1.txt
      #vim /app/find1.txt
    #find /etc/ -regex “..conf$” >find1.txt 2>&1 可以導出錯誤結果
   
    -ok command {} \; 對查找到的文件當做下一命令的參數去執行(交互式)

        #find /etc/ -regex “..conf$” -ok cp -a {} /app/{}.bak \;
        cp一個文件 -a 表示文件復制過程權限,鏈接都不改變 {}代表原文件就是前面搜索到的文件 {}.bak代表目的文件
          #find /etc/ -regex “..conf$” -ok cp -a {} /app/{}.bak \;-maxdepth 1表示一級目錄下的文件
          #find /etc/ -maxdepth 1 -regex “.
.conf$” -ok rm -rf {} \;  刪除命令 

    -exec command \; 對查找到的文件當做下一命令的參數去執行(非交互式)
         #find /etc/ -maxdepth 1 -regex “..conf$” -exec cp -a {} /app/ \; -maxdepth 1表示一級目錄下的文件 跟ok
         一樣但是少了詢問
         # find /etc -regex   “.
.conf$” -exec ls {} \;

find -name “.conf” -exec cp {} {}.orig \;
find /tmp -ctime +3 -user joe -ok rm {} \;
find ~ -perm -002 -exec chmod o-w {} \;
find /data –type f -perm 644 -name “
.sh” –exec chmod 755 {} \;
find /home –type d -ls

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

 xargs:

    touch a{1..1000000} 當創建很多文件是rm就會刪除不了這時用 xargs來參數傳遞

    echo {1..30000000} | xargs touch

查找find及壓縮與解壓

     find |xargs rm

查找find及壓縮與解壓

    由于很多命令不支持管道|來傳遞參數,而日常工作中有這個必要,所以就有了xargs
 注意:文件名或者是其他意義的名詞內含有空格符的情況,有些命令不能接受過多參數,
      命令執行可能會失敗,xargs可以解決
       如:

          find /sbin -perm +700|xargs ls -l

查找find及壓縮與解壓

     find 和 xargs 格式:find| xargs ccommand
   

練習:
1、查找/var目錄下屬主為root,且屬組為mail的所有文件

find /var -user root -a -group mail -ls

查找find及壓縮與解壓

2、查找/var目錄下不屬于root、lp、gdm的所有文件

find /var -not \( -user root -o -user lp -o -user gdm \) -ls

查找find及壓縮與解壓

3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件

find /var/ -mtime -7 -not -user root -not -user postfix -ls

查找find及壓縮與解壓

4、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件

find / -nouser -o -nogroup -a -atime -7 -ls

查找find及壓縮與解壓

5、查找/etc目錄下大于1M且類型為普通文件的所有文件

find /etc/ -size +1M -a -type f -ls

查找find及壓縮與解壓

6、查找/etc目錄下所有用戶都沒有寫權限的文件

find /etc ! -perm /222 -ls

查找find及壓縮與解壓

7、查找/etc目錄下至少有一類用戶沒有執行權限的文件

find /etc ! -perm -111  -ls

查找find及壓縮與解壓

   gnome 搜索工具 圖形化的搜索工具

壓縮和解壓:
compress
.Z  #compress abc(原有文件沒有生產新文件 abc.z)

-d 解壓縮   #compress -d abc.Z  查找find及壓縮與解壓

             uncompress  #uncompress  abc.Z

查找find及壓縮與解壓

zcat X.Z > X 解壓并導入新文件

-c 將結果打印到屏幕上,配合重定向,不會覆蓋原文件,但權限會變。 #compress -c abc (看到的全是亂碼其實是
          壓縮文件,并將壓縮文件的內容打印出來) 
         #compress -c abc > abc.Z 原本的文件還在并生產壓縮文件   #compress -dc abc.Z > abc 
 s
-f 默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1.
-v 顯示詳細過程。 #compress -v abc
演示過程: #cp /var/log/messages . #ls #ls -lh查看詳細信息 #cp messages messages1  #cat messages1 >> messages (盡量讓文件大點多導入幾次)
           # cp messages abc 拷貝  #compress abc壓縮 (原有文件沒有生產新文件 abc.z)
           #compress -dc abc.Z > abc 
           rm -rf abc
           ln messages abc (創建硬鏈接) 當兩個文件是鏈接是 # compress  abc沒用 但是 # compress  -f abc就可以壓縮
           messages不變鏈接數減一

           > 壓縮過程權限會改變因為相當于又重定向了 , 直接壓縮文件不導入權限并不改變 
           原文件會丟失

gzip 
.gz  #gzip messages 生成messages.gz 原文件會丟失

-d 解壓縮  # gzip -d messages.gz 
gunzip
zcat X.gz > X
-c 將結果打印到屏幕上,配合重定向,不會覆蓋原文件,但權限會變。# gzip -c messages >messages.gz
              # gzip -c messages  #gzip -dc messages.gz> messages 

-f  如果文件是鏈接文件,默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1.
-v 顯示詳細過程。
-# 數字越大,壓縮比越高,速度越慢,文件越小。
-1 等于 –fast
-2,3,4,5,6(default),7,8
-9 等于 –best
     可tab補齊

bzip2
.bz2
-d 解壓縮
bunzip
bzcat X.bz2 > X
-k 保留原文件
-c 將結果打印到屏幕上,配合重定向,不會覆蓋原文件,但權限會變。
-f 默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1.
-v 顯示詳細過程。
-# 數字越大,壓縮比越高,速度越慢,文件越小。
-1 等于 –fast
-2,3,4,5,6,7,8
-9 等于 –best (default)

xz
.xz
-d 解壓縮
xzcat 
-k 保留原文件
-f 默認不對硬鏈接數為2及以上的文件壓縮,加上f,強制壓縮指定文件,而其他同inode的文件硬鏈接數減1.
-v 顯示詳細過程。
-# 數字越大,壓縮比越高,速度越慢,文件越小。
-0 等于 –fast
-1 -2,3,4,5,6(default),7,8
-9 等于 –best 

zip
.zip
unzip
|zip 將生成的文件名 –
可以將管道前的輸出結果轉為文件并壓縮。通過此方式壓縮的文件只能使用“unzip -p 壓縮包 > 新文件 ”來解壓縮
unzip -p 預覽解壓縮后的內容到屏幕,可以配置重定向將結果保存到指定文件,權限會發生變化。

        zip -r 新文件名.zip 被壓縮打包的工具(可以多個文件)

tar
-cf 創建包名字  原文件(可以指定多個)
-tf 包名字   顯示包中的文件名
-tvf 詳細顯示包中的文件名
-rf 包名字 新文件名(可以指定多個)
–delete -f 包名字 被刪除的文件名(可以指定多個)
-xf 包名字 解出所有的文件到當前目錄
-xf 包名字 文件名 解所指定的文件到當前目錄
-C 解包到指定目錄
-v 顯示過程
-Jcf 創建包的名字(.tar.xz) 原文件(可以指定多個) 打包并用xz壓縮
-jcf 創建包的名字(.tar.bz2) 原文件(可以指定多個) 打包并用bzip壓縮
-zcf 創建包的名字(.tar.gz) 原文件(可以指定多個) 打包并用gzip壓縮
-T 指定個列表,包含需要被打包的文件,以換行符為間隔
-X 指定個排除列表,以換行符為間隔
分割:
     分割大的tar文件為多份小文件:

split –b Size –d tar-file-name prefix-name 將tar包分隔為多個文件
splid  -b 1M -d messades.tgz messades-parts -b文件劃分大小, -d 文件名
splid  -b 5k -d test.tar.gz newtest 分成五個小文件
cat 被分隔出的多個文件名 > 單個文件名
cat newtest.tar.gz0
> test.tar.gz2

cpio復制
ls * |cpio -o > 文件名.cpio  打包。 #ls |cpio -ov > new.cpio
         ls group gshadow passwd shadow |cpio -o >aaa
cpio -id < 文件名.cpio 解開被cpio打包的文件 #cpio -id <new.cpio 查看new.cpio的文件
gzip 文件名.cpio  生成文件名為文件名.cpio.gz 
       
/boot/initramfs-xxxx.img 
Centos6: cpio.gz文件:
                     #zcat initramfs-xxxx.img |cpio -id
                #zcat aaa.cpio.gz|cpio -id 解壓被cpio打包的文件
Centos7: cpio文件 :
                    #cpio -id < initramfs-xxxx.img
-tv < 文件名.cpio 預覽cpio打包的文件。
      將etc目錄備份:
          #find ./etc -print | cpio -ov >etc.cpio
       內容預覽:
          #cpio -tv < etc.cpio
       要解包文件:
          #cpio -idv < etc.cpio

xfs
ext4 
rescue

sda1   /boot /mnt/sysimage/boot
sda2   /        /mnt/sysimage 
sda3   swap
sda4     extend
sda5   /app     /mnt/sysimage/  
/mnt/sysimage/root  -> /mnt/sysimage/lib64

ldd +絕對路徑 查看動態庫
/lib64/libc.so.6
chroot /mnt/sysimage 
cd ../../../   

dns chroot > /var/name/chroot/var/named

A  (A)
  a.so  (A)
  b.so  (A)
  c.so  (B) 如果想要安裝A 要檢測B有沒有,沒有就不安裝,A依賴于B B又依賴于C C又依賴于A 循環

A -> B  -> C -> A
debian deb dpkg 包管理器會檢測當要安裝包時會自動檢測所需要的所有包,并一起安裝
ubuntu deb  apt-get包的管理器

redhat   redhat package manager  = rpm 紅帽子的包管理器
RPM package manager  RPM對應包的批量管理 YUM 
GNU  Gnu is not unix 

YUM DNF fedora

httpd-xxxx.tar.gz包含:   xxx.c源代碼  …so  readme.txt =  >  httpd-xxxx.rpm 變成

httpd.deb 
ftp.deb
bind.deb

練習:統計光盤中Packages下,各種架構的rpm包的數量。
ls *.rpm |rev |cut -d. -f2|sort |rev |uniq -c  rev 對于篩選出的 反著輸出
Packages]# ls | egrep -o “[^\.]+\.rpm$” |cut -d. -f1 |sort |uniq -c

A -> B -> C -> D -> A

testapp.rpm
testapp.so文件
/usr/lib/testapp/testapp.so
/usr/bin/testapp 執行文件存放地方
#cd /run/media/root/CentOS\ 7\ x86_64/ 包的存放路徑
#cd Packages/

解決包的依賴管理工具:
             yum: rpm包管理器的前端工具
             apt-get:ded包管理器前端工具
             zypper: suse上的rpm 前端工具
             dnf:Fedora 18+rpm 包管理器前端管理工具
查看二進制程序所依賴的庫文件:
            ldd /PATH/TO/BINARY_FILE  #ldd /sbin/ifconfig
管理及查看本機裝載的庫文件:
             ldconfig
             /sbin/ldconfig -p:顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系
配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf
緩存文件: /etc/ld.so.cache
           如:
              #cd /etc/ld.so.conf.d/
              #vim testapp.conf
                 /user/lib/testapp/
              #ldconfig
rpm  數據庫var/lib/rpm #cd /var/lib/rpm 記錄安裝過的包數據和信息
   -i –instal 安裝包
                 #rpm -i httpd-2.4.6-45.el7.centos.x86_64.rpm 
                 #rpm -i httpd-tools-2.4.6-45.el7.centos.x86_64.rpm  (httpd包的安裝,還依賴于兩個庫文件)
                 #rpm -i screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm 
–test 檢測
–nodeps 忽略依賴性關系直接安裝
-v 顯示詳細信息
        -vi 顯示包名
-vv 顯示更詳細信息
-h 顯示進度
-ivh 顯示包名進度條
    –test: 測試安裝,但不真正執行安裝,即dry run模式
             #rpm -ivh –test screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm 
             –nodeps:忽略依賴關系
             –replacepkgs 已安裝過的包重裝。
             –replacefiles 其他已安裝的RPM包的文件,與即將裝的RPM中的文件沖突時,則覆蓋文件并安裝。
             –nosignature: 不檢查來源合法性
             –nodigest:不檢查包完整性
             –noscripts:不執行程序包腳本:
      %pre: 安裝前腳本; –nopre  #rpm -ivh –noscripts  –nopre screen-4.1.0-0.23.20120314git3c2946.el7_2.x86_64.rpm 
      %post: 安裝后腳本; –nopost
      %preun: 卸載前腳本; –nopreun
      %postun: 卸載后腳本; –nopostun

   -Uvh 當有舊的版本的包時,則卸載舊包再裝新包,如沒有舊包,直接裝新包。
   -Fvh 當有舊的包時,卸載舊包裝新包,無舊包時,nothing
   –oldpackage 降級  已有新包,裝舊包。
   –force 強制安裝。–replacepkgs  –replacefiles  –oldpackage

查詢安裝包:

   -q 軟件包名  查詢已安裝過的軟件包名。#rpm -q tree
    -qa 列出所有的已安裝過的rpm包
                #rpm -qa
    -qa “name*” #rpm -qa “tre*”
    -qa |grep name #rpm -qa |grep tree
    -qf 查詢一個文件來自于哪一個rpm包 (已安裝的rpm) #rpm -qf /bin/ls
    -q –changelog 版本更新日志 #rpm -q –changelog tree
    -qc 查詢軟件包的配置文件(不是所有包都有配置文件)#rpm -qc aide
    -qd 查詢軟件包的幫助文檔  #rpm -qd aide
    -qi 查詢軟件包的詳細信息  #rpm -qi tree #rpm -qi `rpm -qf /bin/ls`
    -ql 查詢軟件包所安裝到系統當中的所有文件路徑 #rpm -ql tree 
    -q –scripts 查詢軟件包自帶的腳本  #rpm -q –scripts `rpm -qf /bin/ls`
         -q –provides 查詢自身的功能  #rpm -q –provides `rpm -qf /bin/ls` #rpm -q –provides tree
    -qR 查詢實現自身的功能需要什么能力
    -qp[licd] rpm包 查看未安裝的rpm包的各項信息 #rpm -qp http
         -p 針對尚未安裝的程序包文件做查詢操作

   -e 軟件名
    –nodeps 忽略依賴性。強制卸載

    –import GPG-KEY….  導入公鑰 gpd生成公鑰
    -qa “gpg-pubkey*”   顯示所有已導入的公鑰
    -e gpg-pubkey….
    -K rpm包 驗證某rpm簽名是否合法 #rpm -K tree-1.6.0-10.el7.x86_64.rpm (md5 not ok是應為沒有公鑰 )

    進入centos6.9光盤 # ls  #rpm –import RPM-CPG-KEY-Centos-6(導入公鑰)
    #rpm -qa “gpg-pubkey*” 查看公鑰信息

yum rpm的前端程序,可解決軟件包相關依賴性,可在多個庫之間定位軟件包,up2date的替代工具
yum存儲了很多rpm已及包的相關元數據(防置于特定目錄repodata下)yum需要建立倉庫倉庫repository
     配置文件:/etc/yum.conf為倉庫提供公共配置
               /etc/yum.repos.d/*.repo為倉庫的指向提供配置
#vim /etc/yum.conf  yum有緩存
#cd  /etc/yum.repos.d 提供一些默認的地址
#vim /etc/yum.repos.d
編寫倉庫:
      #cd  /etc/yum.repos.d
      #vim magedu.repos.d 文件必須以repo 結尾
   格式:
        [base]名 倉庫的id
        name=magedu 26 repo
        baseurl=http://172.16.0.1/centos/6/目錄
                file:///media/dvd/centos6.9 本地地址
                file:///run/media/root/Centos\ 7\ x86_64
        gbgkey=file:///run/media/root/Centos\ 7\ x86_64/RPM-CPG-KEY-Centos-7公鑰
        gpgcheck=1 不檢查默認1 就不用公鑰的設置了照樣能安裝 # yum install httpd
        #cd #yum repolist 
repolist 列出repo信息   #cd #yum repolist 列出倉庫
install 包名 # yum install httpd安裝
        enabled={1|0}代表倉庫是否啟動 1開啟
:.!將內容顯示出來

設置緩存:
#cd /var/cache/yum/
#ls
#cd x86_64/
#ls
#cd #
#ls
#cd base/
#yum clean all
# yum repolist

原創文章,作者:MOMO,如若轉載,請注明出處:http://www.www58058.com/84550

(0)
MOMOMOMO
上一篇 2017-08-12
下一篇 2017-08-12

相關推薦

  • Btrfs文件系統的管理和應用

        Btrfs(我們稱之為Butter FS或者B-tree FS)被稱為新一代的linux文件系統。一直以來,EXT文件系統以其卓越的穩定性成為linux標準的文件系統。但近年來,EXT3暴露出一些擴展性的問題(如單一文件大小限制、總文件系統大小限制等),于是便催生了EXT4。但同時,Btrfs向人們展現出諸多優…

    Linux干貨 2016-02-14
  • keepalived高可用

    keepalived實現wrrp熱網關備份:keepalived配置文件如下主:! Configuration File for keepalived global_defs {  notification_email {    acassen@firewall.loc    failover@firewal…

    Linux干貨 2017-05-16
  • 學習宣言

    現在,青春是用來奮斗的;將來,青春是用來回憶的。   人生之路,有坦途也有陡坡,有平川也有險灘,有直道也有彎路。青年面臨的選擇很多,關鍵是要以正確的世界觀、人生觀、價值觀來指導自己的選擇。無數人生成功的事實表明,青年時代,選擇吃苦也就選擇了收獲,選擇奉獻也就選擇了高尚。青年時期多經歷一點摔打、挫折、考驗,有利于走好一生的路。要歷練寵辱不驚…

    Linux干貨 2016-12-29
  • N26-第九周

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash # # # NUM1=0 NUM2=0 for i in `cut -d: -f7 /etc/passwd` ;do if [[ “$i” = ‘/bin/bash…

    Linux干貨 2017-03-15
  • 8-12 文件查找

    8-12 文件查找   8–1該節主要分為三部分,分別是作業,自己對德·摩根定律的了解及find常用選項   一、作業 1、查找/var目錄下屬主為root,且屬組為mail的所有文件 2、查找/var目錄下不屬于root、lp、gdm的所有文件 3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是pos…

    Linux干貨 2016-08-15
  • Nginx配置進階

    目錄 ngx_http_rewrite_module模塊 ngx_http_gzip_module模塊 ngx_http_fastcgi_module模塊 ngx_http_ssl_module模塊 ngx_http_referer_module模塊 ngx_http_rewrite_module模塊 將用戶某一次請求的URI當中的字符串是不是能夠被我們給出…

    Linux干貨 2016-11-05
欧美性久久久久