Linux文件系統大雜燴

1.我們先來了解一下Linux爲什麼不同的發行版本中的目錄結構基本上都一樣呢?

因爲Linux有一個組織叫LSB(全稱:Linux Standards Base)定義的Linux發行版基礎目錄名稱命名法則及功用固定,這種標準叫做FHS (Filesystem Hierarchy Standard(文件系統目錄標準)文件系統層級標準。

2.根文件系統即:rootfs,目錄結構:/etc,/usr,/var,/root,/home,/dev

3.文件有兩類數據:

元數據:metadata :Super Block  GDT  inode表  inode 位圖  block 位圖

  數據:  data   :Data Block


            #元數據和數據不在一個地方存儲,(tune2fs -l /dev/sad2)查看佔用塊的信息字節爲單位。一個文件至少佔用一個塊

wKiom1ed7E2D4nW_AABQxZcGuPw278.png

4.文件名規則:

        文件高亮顏色:藍色----->目錄    綠色----->可執行文件   紅色----->壓縮文件   淺藍色----->鏈接文件     灰色----->其他文件 

        包括路徑在內文件名稱最長4095個字節,用/分隔的路徑不能 超過255個字節。 

        除了斜槓和NUL,所有字符都有效.但使用特殊字符的目錄名和 文件不推薦使用,有些字符需要用引號來引用它們。 

        標準Linux文件系統(如ext4),文件名稱大小寫敏感。例如 :MAIL, Mail, mail, mAiL

        wKioL1ed7L2RMe_wAAAN2zYGgqk281.png

        以.開頭的文件是隱藏文件

wKiom1ed7QPiXy6XAAAoeG_IQ8o348.png

5.文件系統結構:

            /boot:引導文件存放目錄,內核文件(vmlinuz)、引導加載器 (bootloader, grub)都存放於此目錄 

            /bin:供所有用戶使用的基本命令;不能關聯至獨立分區, OS啓動即會用到的程序 

            /sbin:管理類的基本命令;不能關聯至獨立分區,OS啓動即 會用到的程序 

            /lib:啓動時程序依賴的基本共享庫文件以及內核模塊文件 (/lib/modules) 

            /lib64:專用於x86_64系統上的輔助共享庫文件存放位置 

            /etc:配置文件目錄 

            /home/USERNAME:普通用戶家目錄 

            /root:管理員的家目錄 

            /media:便攜式移動設備掛載點

            /mnt:臨時文件系統掛載點 

            /dev:設備文件及特殊文件存儲位置 b: block device,隨機訪問 c: character device,線性訪問 

            /opt:第三方應用程序的安裝位置 

            /srv:系統上運行的服務用到的數據 ?/tmp:臨時文件存儲位置

            /usr: universal shared, read-only data 

  bin: 保證系統擁有完整功能而提供的應用程序 

      sbin: 

            lib:32位使用 

            lib64:只存在64位系統 

            include: C程序的頭文件(header files) 

            share:結構化獨立的數據,例如doc, man等 

            local:第三方應用程序的安裝位置 bin, sbin, lib, lib64, etc, share

      var: variable data files 

            cache: 應用程序緩存數據目錄

            lib: 應用程序狀態信息數據 

            local:專用於爲/usr/local下的應用程序存儲可變數據; 

            lock: 鎖文件 log: 日誌目錄及文件 

            opt: 專用於爲/opt下的應用程序存儲可變數據; 

            run: 運行中的進程相關數據;通常用於存儲進程pid文件 

            spool: 應用程序數據池 

            tmp: 保存系統兩次重啓之間產生的臨時數據

    /proc: 用於輸出內核與進程信息相關的虛擬文件系統 

    /sys:用於輸出當前系統上硬件設備相關信息虛擬文件系統 

    /selinux: security enhanced Linux,selinux相關的安全策 略等信息的存儲位置

6.Linux上的應用程序的組成部分 :

                    二進制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

                    庫  文  件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64 

                    配置 文件 :/etc, /etc/DIRECTORY, /usr/local/etc 

                    幫助 文件 :/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

7.Linux下的文件類型:

                    -:普通文件 

                    d: 目錄文件 

                    b: 塊設備 

                    c: 字符設備 

                    l: 符號鏈接文件 

                    p: 管道文件pipe

                    s: 套接字文件socket

wKioL1ed8vfAIAmTAAAgNgJJt8M309.png

8.絕對路徑和相對路徑:

                絕對路徑:以正斜槓開始 完整的文件的位置路徑 可用於任何想指定一個文件名的時候 

                相對路徑:不以斜線開始 指定相對當前的工作目錄位置 可以作爲一個簡短的形式指定一個文件名

wKioL1ed84nSNmn_AAAQ1fKq2iU934.png

9.ls命令參數:

            功能:列出當前目錄的內容或指定目錄 

            用法:ls [options] [files_or_dirs] 

                Example: 

                        ls -a  包含隱藏文件 

                        ls -l  顯示額外的信息 

                        ls -R  目錄遞歸通過 

                        ls -ld 目錄和符號鏈接信息             

                        ls -1  文件分行顯示 

                        ls –S  按從大到小排序 

                        ls –u  配合-t選項,顯示並按atime 從新到舊排序 

                        ls –U  不排序按目錄存放順序顯示

                        常用參數 ls -l -a -d

10.文件通配符:

                        * 匹配零個或多個字符 

                        ? 匹配任何單個字符 

                        ~ 當前用戶家目錄 

                        ~username 用戶家目錄 

                        ~+ 當前工作目錄 

                        ~-   : 前一個工作目錄 

                        [0-9]:匹配一個數字範圍 

                        [a-z]:大寫和小寫字母 

                        [A-Z]:大寫字母

                        [wxc] 匹配列表中的任何的一個字符 

                        [^wxc] 匹配列表中的所有字符以外的字符 

預定義的字符類:

                         #man 7 glob 

                        [:digit:]:任意數字,相當於0-9

                        [:lower:]:任意小寫字母

                        [:upper:]: 任意大寫字母

                        [:alpha:]: 任意大小寫字母 

                        [:alnum:]:任意數字或字母 

                        [:space:]:空格 

                        [:punct:]:標點符號

11.查看文件狀態:使用stat 

 文件:metadata, data (元數據,數據)

               三個時間戳:     

                         access time:訪問時間,atime,讀取文件內容 

                         modify time: 修改時間, mtime,改變文件內容(數據) 

                         change time: 改變時間, ctime,元數據發生改變

wKioL1ed9DWjkZaXAAAf7Y6UJKw387.png

創建空文件和刷新時間

                touch命令:touch [OPTION]... FILE... 

                        -a: 僅改變 atime 

        -m: 僅改變 mtime 

        -t:STAMP: [[CC]YY]MMDDhhmm[.ss] 

                        -c: 如果文件不存在,則不予創建

wKiom1ed9fTiaLyVAABDV8Ur5As545.png

12.cp文件和目錄:

             -i:交互式 

         -r, -R: 遞歸複製目錄及內部的所有內容; 

             -a: 歸檔,相當於-dR --preserv=all 

             -d:--no-dereference --preserv=links 不復制原文件,只複製鏈接名 

             -p:等同--preserv=mode,ownership,timestamp 

             -v: --verbose ? -f: --force

            --preserv[=ATTR_LIST] mode: 權限 ownership: 屬主屬組 timestamp: links xattr context all 

            cp [OPTION]... [-T] SOURCE DEST 

            cp [OPTION]... SOURCE... DIRECTORY 

            cp [OPTION]... -t DIRECTORY SOURCE... 

            cp demo test 

          demo是文件: 如果目標不存在:會自動新建test,並將demo中內容填充至 test中

                      wKiom1ed_EaDH34FAAANdOib2xM194.png

        如果test是文件:將demo中的內容覆蓋至test中 基於安全,建議爲cp命令使用-i選項 。

        如果test是目錄:在test下新建與原文件同名的文件,並將demo中內容填充至新文件中

                      wKiom1ed_M2hoIhwAAARp_yhNik130.png

        cp demo... test demo...:多個文件 

        test必須存在,且爲目錄,其它情形均會出錯; 

        cp demo test demo是目錄:此時使用選項:-r 如果test不存在:則創建指定目錄,複製demo目錄中所有文件至test中;

                   wKiom1ed_gzydz4TAAAToG4QP3U103.png 

        如果test是文件:報錯 

        如果test是目錄:複製demo目錄中所有文件至test中;

13.mv文件和目錄:

            mv [OPTION]... [-T] SOURCE DEST 

            mv [OPTION]... SOURCE... DIRECTORY 

            mv [OPTION]... -t DIRECTORY SOURCE... 

                    常用選項:

                          -i: 交互式

                 -f: 強制

[root@localhost nzg]# mv tesy/ test

14.rm文件和目錄:

            rm [OPTION]... FILE... 

                   常用選項: 

                         -i: 交互式 

                         -f: 強制刪除 

                         -r: 遞歸 

                         --no-preserve-root  

                    例: #rm -rf /

[root@localhost nzg]# rm -rf test/ demo/

15.目錄常用操作:

            tree 顯示目錄樹:

                        -d: 只顯示目錄 

                        -L level:指定顯示的層級數目 

                        -P pattern: 只顯示由指定pattern匹配到的路徑 

                        wKioL1ed_ufCnWnvAAAIqEK4ZMg733.png

                        wKioL1ed_0KRyqUjAAAJxvSQLQQ010.png

                        

            mkdir 創建目錄:

        -p: 存在於不報錯,且可自動創建所需的各目錄; 

                        -v: 顯示詳細信息 

                   -m MODE: 創建目錄時直接指定權限; 

[root@localhost nzg]# mkdir -p aa/bb/cc/dd/ee/ff

                      rmdir 刪除空目錄 :

                        -p: 遞歸刪除父空目錄 

                        -v: 顯示詳細信息 

[root@localhost nzg]# rmdir -p test/aa/bb/

16.設置命令別名:

        編輯配置給出的新配置不會立即生效; 

        bash進程重新讀取配置文件: 

        source /path/to/config_file 

        .  /path/to/config_file 

               撤消別名:unalias 

                       unalias [-a] name [name ...]    例如 ~]# unalias bf

                 如果別名同原命令同名,如果要執行原命令,可使用 “\COMMAND” ’COMMAND’ /PATH/COMMAND:外部命令

alias bf='cp -rfp /etc/ /testdir/backup-2016-07-31'
alias l.='ls -d .* --color=auto'

17.索引節點:

         inode(index node)表中包含文件系統所有文件列表 

         一個節點 (索引節點)是在一個表 包含有關文件的信息 ( 元數據 ),

                包括: 

                     文件類型

                      權限

                      UID

                      GID 鏈接數(指向這個文件名路徑名稱個數) 

                      該文件的大小和不同的時間戳 

                      指向磁盤上文件的數據塊指針 

                      有關文件的其他數據

                #人是通過文件名來引用一個文件

                #而文件引用一個是 inode號

                #一個目錄是目錄下的文件名和文件inode號之間的映射

              cp和inode

                   CP和inode: 分配一個空閒的inode號,在inode表中生成新條目在目錄中創建一個目錄項,將名稱與inode編號關聯 拷貝數據生成新的文件

              rm和inode

                  鏈接數遞減,從而釋放的inode號可以被重用 把數據塊放在空閒列表中 刪除目錄項 數據實際上不會馬上被刪除,但當另一個文件使用數據塊 時將被覆蓋。

              mv和inode

                  如果mv命令的目標和源在相同的文件系統,作爲mv 命令 用新的文件名創建對應新的目錄項 刪除舊目錄條目對應的舊的文件名 不影響inode表(除時間戳)或磁盤上的數據位置:沒有 數據被移動! 

                  如果目標和源在一個不同的文件系統, mv相當於cp和rm

18.查看文件類型:

        文件可以包含多種類型的數據 

        檢查文文件類型,然後確定適當的開放命令或應用程序使用 

        file [options] <filename>...

             Option: 

                 -b列出文件辨識結果時,不顯示文件名稱。 

                 -c詳細顯示指令執行過程,便於排錯或分析程序執行形 

                 -f列出文件中文件名的文件類型 

                 -F使用指定分隔符號替換輸出文件名後默認的”:”分隔符 

                 -i輸出mime類型的字符串 

                 -L查看對應軟鏈接對應文件的文件類型 

                 -z嘗試去解讀壓縮文件的內容 

                --help顯示命令在線幫助

19.硬鏈接和軟連接:

            硬鏈接:

                創建硬鏈接會增加額外的記錄項以引用文件

                對應於同一文件系統上一個物理文件

                每個目錄引用相同的inode號

                創建時鏈接數遞增 

   刪除文件時: rm命令遞減計數的鏈接 文件要存在,至少有一個鏈接數 當鏈接數爲零時,該文件被    刪除;

                 不能跨越驅動器或分區 

         語法: ln filename  [linkname ]

            軟鏈接:

                 一個符號鏈接指向另一個文件 

                 ls - l的 顯示鏈接的名稱和引用的文件

         一個符號鏈接的內容是它引用文件的名稱 

         可以對目錄進行 

         可以跨分區 

                 指向的是另一個文件的路徑;其大小爲指向的路徑字符串的 長度;不增加或減少目                   標文件inode的引用計數; 

                 語法:ln   -s  filename  [linkname]

區別:硬鏈接源文件和鏈接文件使用同一個inode號,而軟鏈接源文件和鏈接文件使用不同的inode號,在文件屬性上軟鏈接有顯示鏈接文件,而硬鏈接沒有顯示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章