天天看點

正式班D16

2020.10.27星期二  正式班D16

目錄

  • 9.9 字元處理指令
    • 9.9.1 sort排序
    • 9.9.2 uniq去重
    • 9.9.3 cut處理規律文本
    • 9.9.4 tr替換
    • 9.9.5 wc統計
  • 9.10 打包壓縮
    • 9.10.1 基本概念
    • 9.10.2 tar.gz與tar.biz2
    • 9.10.3 解包
    • 9.10.4 zip
    • 9.10.5備份
  • 9.11 檔案系統
    • 9.11.1 簡介
    • 9.11.2 檔案系統工作原理
    • 9.11.3 擴充
    • 9.11.4 軟連結、硬連結
    • 9.11.5 實戰應用

9.9 字元處理指令

9.9.1 sort排序

  • 用于将檔案内容加以排序

    -n # 依照數值的大小排序

    -r # 以相反的順序來排序

    -k # 以某列進行排序

    -t # 指定分隔符,預設是空格

    [root@ccc ~]# cat a.py 
    b:3
    c:2
    a:4
    4:1
    f:5
    [root@ccc ~]# sort a.py 
    4:1
    a:4
    b:3
    c:2
    f:5
    [root@ccc ~]# sort -t ":" -n -k2 a.py 
    4:1
    c:2
    b:3
    a:4
    f:5
    [root@ccc ~]# sort -t ":" -n -r -k2 a.py 
    f:5
    a:4
    b:3
    c:2
    4:1
               

9.9.2 uniq去重

  • 用于檢查及删除文本檔案中重複出現的行列,一般與sort指令結合使用

    -c # 在每列旁邊顯示出該行重複出現的次數

    -d # 僅顯示重複出現的行列

    -u # 僅顯示出現一次的行列

    [root@ccc ~]# cat b.py 
    hello
    123
    hello
    123
    hahaha
    [root@ccc ~]# sort b.py 
    123
    123
    hahaha
    hello
    hello
    [root@ccc ~]# sort b.py |uniq
    123
    hahaha
    hello
    [root@ccc ~]# sort b.py | uniq -c
          2 123
          1 hahaha
          2 hello
    [root@ccc ~]# sort b.py | uniq -d
    123
    hello
    [root@ccc ~]# sort b.py | uniq -u
    hahaha
               

9.9.3 cut處理規律文本

  • 用來顯示行中的指定部分,删除檔案中指定字段

    -d # 指定字段的分隔符,預設是"TAB"

    -f # 顯示指定字段的内容

    [root@ccc ~]# head -1 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    [root@ccc ~]# head -1 /etc/passwd | cut -d ":" -f1
    root
    [root@ccc ~]# head -1 /etc/passwd | cut -d ":" -f1-3
    root:x:0
    [root@ccc ~]# head -1 /etc/passwd | cut -d ":" -f1,3
    root:0
               

9.9.4 tr替換

  • 替換或删除指令
    -d # 删除字元
    [root@ccc ~]# head -1 /etc/passwd | tr "bin" "BIN"
    root:x:0:0:root:/root:/BIN/Bash
    [root@ccc ~]# head -1 /etc/passwd | tr -d "root"
    :x:0:0::/:/bin/bash
               

9.9.5 wc統計

  • 統計,計算數字

    -c # 統計檔案的bytes數

    -l # 統計檔案的行數

    -w # 統計檔案中單詞的個數,預設以空白字元作為分隔符

    [root@ccc test]# ll a.py 
    -rw-r--r-- 1 root root 4 10月 27 17:14 a.py
    [root@ccc test]# cat a.py 
    111
    [root@ccc test]# wc -c a.py 
    4 a.py
    [root@ccc test]# wc -l a.py 
    1 a.py
    [root@ccc test]# wc -w a.py 
    1 a.py
    [root@ccc test]# grep "hello" a.py | wc -l
    0
               

9.10 打包壓縮

9.10.1 基本概念

  • 打包:将多個檔案和目錄合并為一個特殊檔案
  • 壓縮:将該特殊檔案進行壓縮得到一個壓縮包
  • 使用壓縮包是為了減少占用的體積和加快網絡的傳輸
  • Windows支援:zip、rar

    Linux支援:zip、tar、gz tar、bz2、gz(字尾不重要但一定要帶)

9.10.2 tar.gz與tar.biz2

  • 打包
    [root@ccc test]# tar cvf bak.tar /etc/passwd  # c:建立,v:詳細過程,f:打包後檔案路徑
    tar: 從成員名中删除開頭的“/”
    /etc/passwd
    [root@ccc test]# ll
    總用量 16
    -rw-r--r-- 1 root root 10240 10月 27 21:36 bak.tar
               
  • 壓縮
    # gzip -> gunzip
    [root@ccc test]# gzip bak.tar 
    [root@ccc test]# ll
    總用量 8
    -rw-r--r-- 1 root root 520 10月 27 21:36 bak.tar.gz
    
    # bzip2 -> bunzip
    [root@ccc test]# bzip2 bak.tar
    [root@ccc test]# ll
    總用量 12
    -rw-r--r-- 1 root root 530 10月 27 21:43 bak.tar.bz2
               
  • 合二為一
    # gzip壓縮算法(.gz結尾)
    [root@ccc test]# tar cvzf bak.tar.gz /etc/passwd
    tar: 從成員名中删除開頭的“/”
    /etc/passwd
    [root@ccc test]# ll
    總用量 16
    -rw-r--r-- 1 root root   512 10月 27 21:47 bak.tar.gz
    
    # bzip2壓縮算法(.bz2結尾)
    [root@ccc test]# tar cvjf bak.tar.bz2 /etc/passwd
    tar: 從成員名中删除開頭的“/”
    /etc/passwd
    [root@ccc test]# ll
    總用量 4
    -rw-r--r-- 1 root root   530 10月 27 21:48 bak.tar.bz2
               

9.10.3 解包

  • tar xvf 壓縮包 -C 解壓到的目錄
    # 針對xxx.tar.gz或者xxx.tar.bz2統一使用
    [root@ccc test]# tar xvf bak.tar.gz -C ~/test
    etc/passwd
    [root@ccc test]# ll
    總用量 12
    -rw-r--r-- 1 root root 512 10月 27 21:54 bak.tar.gz
    drwxr-xr-x 2 root root  20 10月 27 21:55 etc
    
    [root@ccc test]# tar xvf bak.tar.bz2 -C ~/test/
    etc/passwd
    [root@ccc test]# ll
    總用量 12
    -rw-r--r-- 1 root root 530 10月 27 21:54 bak.tar.bz2
    drwxr-xr-x 2 root root  20 10月 27 21:56 etc
    
    # 針對xxx.zip
    [root@ccc test]# unzip bak.zip 
      inflating: etc/passwd              
       creating: etc/yum/
    [root@ccc test]# ll
    總用量 12
    drwxr-xr-x 3 root root  31 10月 27 21:58 etc
               

9.10.4 zip

  • zip後的第一個參數是壓縮包路徑,其餘為被壓縮的檔案
    [root@ccc test]# zip bak.zip /etc/passwd /etc/yum
      adding: etc/passwd (deflated 58%)
      adding: etc/yum/ (stored 0%)
    [root@ccc test]# ll
    總用量 4
    -rw-r--r-- 1 root root 704 10月 27 21:52 bak.zip
               

9.10.5備份

  • 打包壓縮常用于備份檔案,檔案名必須見名知意且帶上時間、主機名之類
    # 時間指令date
    [root@ccc test]# date
    2020年 10月 27日 星期二 22:02:15 CST
    [root@ccc test]# date +%F
    2020-10-27
    [root@ccc test]# date +%Y_%m_%d
    2020_10_27
    [root@ccc test]# date +%T
    22:03:10
    [root@ccc test]# date +%H_%M_%S
    22_03_38
    [root@ccc test]# date +%Y_%m_%d_%H_%M_%S
    2020_10_27_22_04_14
    [root@ccc test]# date -d "-1 day" +%F
    2020-10-26
    [root@ccc test]# date -d "1 day" +%F
    2020-10-28
    
    # 備份
    [root@ccc test]# tar cvzf `date +%Y_%m_%d_%H_%M_%S`_bak.tar.gz /etc/passwd
    tar: 從成員名中删除開頭的“/”
    /etc/passwd
    [root@ccc test]# ll
    總用量 16
    -rw-r--r-- 1 root root 512 10月 27 22:07 2020_10_27_22_07_12_bak.tar.gz
               

9.11 檔案系統

9.11.1 簡介

  • 檔案

    作業系統

    檔案系統(屬于作業系統的一部分)---->提供了檔案的概念

    硬碟

    檔案是作業系統提供給使用者操控硬碟的一種功能

    也就是說作業系統中肯定有一段代碼專門用來提供檔案的功能

  • 檔案系統

    檔案系統是作業系統中的負責控制硬碟的一個軟體

    Linux常用xfs、ext4和btrfs

    Windows常用FAT32、NTFS

  • 檔案系統-->檔案

9.11.2 檔案系統工作原理

  • 兩部分組成:

    ①檔案的元資訊:例如權限(rwx)、擁有者、群組、時間參數等

    ②檔案的實際内容

  • 檔案系統通常會把這兩部分分别存放在不同的區塊

    ①檔案的元資訊放置到inode區塊中

    ②檔案的實際内容則放置到data block區塊中

    ③每個inode與block都有自己的編号

  • 檔案的超級區塊(superblock)會記錄整個檔案的整體資訊

    包括inode與block的總量、使用量、剩餘量等

  • 硬碟的最小存取機關->扇區(Sector)->512位元組->0.5kb

    作業系統的最小存取機關->block塊->8個扇區->4kb

  • 總結
    # superblock
    記錄此filesystem的整體資訊,包括inode/block的總量、使用量、剩餘量,及問價系統的格式與相關資訊等
    
    # inode
    1、記錄檔案元資訊,包括檔案對應的一個或多個block塊号碼
    2、一個檔案被配置設定唯一一個inode
    
    # block
    1、記錄檔案實際内容
    2、一個檔案過大時可能會被配置設定多個block塊,即一個檔案可能對應多個block塊的号碼,這些号碼都存放在該檔案的inode裡
               
  • 舉例
    [root@ccc test]# ls -di /
    64 /
    [root@ccc test]# ls -di /etc/
    4194369 /etc/
    [root@ccc test]# ls -i /etc/passwd
    4739260 /etc/passwd
               
  • cat /etc/passwd的整體過程
  • 通常稱ext檔案系統為索引式檔案系統(indexed allocation)

9.11.3 擴充

  • inode資訊

    inode為索引節點,是Unix作業系統的一種資料結構,本質是結構體

    inode負責存檔案的元資訊,如檔案的建立者、建立日期、大小、inode等

    根本上inode存放除了檔案的名字及真實内容外所有有關檔案的資訊/中繼資料(metadata)

    ​ 1、inode編号

    ​ 2、用來識别檔案類型及用于stat C函數的模型資訊

    ​ 3、連結數,即有多少檔案名指向這個inode

    ​ 4、屬主的ID(UID)

    ​ 5、屬主的組ID(GID)

    ​ 6、檔案的位元組數

    ​ 7、檔案所使用的磁盤塊的實際數目

    ​ 8、檔案的時間戳(ctime指inode上一次變動的時間,mtime指檔案内容上一次變動的時間,atime指檔案上依次打開的時間

    ​ 9、指向資料塊的指針

    可以用stat指令檢視某個檔案的inode資訊

    [root@ccc test]# touch cjx.py
    [root@ccc test]# stat cjx.py 
      檔案:"cjx.py"
      大小:0         	塊:0          IO 塊:4096   普通空檔案
    裝置:803h/2051d	Inode:584529      硬連結:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    最近通路:2020-10-27 22:55:07.390351576 +0800
    最近更改:2020-10-27 22:55:07.390351576 +0800
    最近改動:2020-10-27 22:55:07.390351576 +0800
    建立時間:-
               
    atime  # access time通路檔案内容的時間。對檔案内容進行一次讀操作,通路時間就會變。
    	   # cat、more等操作都會,但stat、ls不會對atime産生影響
    mtime  # modify time修改檔案内容的時間。檔案内容最後一次修改的時間
    	   # ll指令顯示的就是mtime
           # vim編輯儲存後,mtime就會改變。
           # 如echo aa >> a.sh 或vim a.txt修改内容
    ctime  # change time指inode上一次檔案屬性變動時間。
    	   # 檔案狀态改變,ctime就會改變,例如chmod、chown等
    
    # 使用cat指令檢視檔案後,檔案atime變更
    [root@ccc test]# touch cjx.py
    [root@ccc test]# stat cjx.py 
      檔案:"cjx.py"
      大小:0         	塊:0          IO 塊:4096   普通空檔案
    裝置:803h/2051d	Inode:584529      硬連結:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    最近通路:2020-10-27 22:55:07.390351576 +0800
    最近更改:2020-10-27 22:55:07.390351576 +0800
    最近改動:2020-10-27 22:55:07.390351576 +0800
    建立時間:-
    [root@ccc test]# cat cjx.py 
    [root@ccc test]# stat cjx.py 
      檔案:"cjx.py"
      大小:0         	塊:0          IO 塊:4096   普通空檔案
    裝置:803h/2051d	Inode:584529      硬連結:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    最近通路:2020-10-27 23:04:49.565459717 +0800
    最近更改:2020-10-27 22:55:07.390351576 +0800
    最近改動:2020-10-27 22:55:07.390351576 +0800
    建立時間:-
    
    # atime不變mtime及ctime改變
    [root@ccc test]# touch zzz.py
    [root@ccc test]# stat zzz.py 
      檔案:"zzz.py"
      大小:0         	塊:0          IO 塊:4096   普通空檔案
    裝置:803h/2051d	Inode:584530      硬連結:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    最近通路:2020-10-27 23:07:46.877188087 +0800
    最近更改:2020-10-27 23:07:46.877188087 +0800
    最近改動:2020-10-27 23:07:46.877188087 +0800
    建立時間:-
    [root@ccc test]# cat >> zzz.py << EOF
    111
    EOF
    [root@ccc test]# stat zzz.py 
      檔案:"zzz.py"
      大小:4         	塊:8          IO 塊:4096   普通檔案
    裝置:803h/2051d	Inode:584530      硬連結:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    最近通路:2020-10-27 23:07:46.877188087 +0800
    最近更改:2020-10-27 23:08:00.638167014 +0800
    最近改動:2020-10-27 23:08:00.638167014 +0800
    建立時間:-
    
    # atime、mtime不變,ctime改變
    [root@ccc test]# touch mmm.py
    [root@ccc test]# stat mmm.py 
      檔案:"mmm.py"
      大小:0         	塊:0          IO 塊:4096   普通空檔案
    裝置:803h/2051d	Inode:584531      硬連結:1
    權限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
    最近通路:2020-10-27 23:09:11.228058875 +0800
    最近更改:2020-10-27 23:09:11.228058875 +0800
    最近改動:2020-10-27 23:09:11.228058875 +0800
    建立時間:-
    [root@ccc test]# ll mmm.py 
    -rw-r--r-- 1 root root 0 10月 27 23:09 mmm.py
    [root@ccc test]# chmod 000 mmm.py 
    [root@ccc test]# stat mmm.py 
      檔案:"mmm.py"
      大小:0         	塊:0          IO 塊:4096   普通空檔案
    裝置:803h/2051d	Inode:584531      硬連結:1
    權限:(0000/----------)  Uid:(    0/    root)   Gid:(    0/    root)
    最近通路:2020-10-27 23:09:11.228058875 +0800
    最近更改:2020-10-27 23:09:11.228058875 +0800
    最近改動:2020-10-27 23:10:03.715978463 +0800
    建立時間:-
    [root@ccc test]# ll mmm.py 
    ---------- 1 root root 0 10月 27 23:09 mmm.py
               
  • inode大小(df -i)

    inode會消耗硬碟空間,是以硬碟格式化時作業系統會将硬碟分為兩個區域

    ​ ①inode區(inode table):存放inode所包含的資訊

    ​ ②block資料區:存放檔案資料

    檢視硬碟分區的inode總數和已使用量用df -i指令

    每個檔案必須要有一個inode,是以inode用光但硬碟未存滿時也無法在硬碟上建立新檔案

    # 檢視xfs檔案系統每個inode節點大小(centos7)
    xfs_info /dev/sda3
    
    # 檢視ext檔案系統每個inode節點大小(centos6)
    sudo dumpe2fs -h /dev/hda | grep "Inode size"
               
  • inode号碼

    每個inode都有一個号碼,作業系統用inode号碼來識别不同的檔案

    Linux系統不使用檔案名,而使用inode号碼來識别檔案

    ​ ①系統找到這個檔案名是對應的inode号碼

    ​ ②通過inode号碼擷取inode資訊

    ​ ③根據inode資訊找到檔案資料所在的block,讀出資料

    使用ls -i指令可以看到檔案名對應的inode号碼

    [root@ccc test]# ls -i cjx.py 
    584529 cjx.py
               
  • 目錄項

    Linux系統中目錄(directory)也是一種檔案。打開目錄實際上就是打開目錄檔案

    目錄結構:一系列目錄項(dirent)的清單。

    目錄項兩個組成部分:所包含檔案的檔案名,給檔案名對應的inode号碼

    ls指令:列出目錄檔案中的所有檔案名

    [root@ccc test]# ls
    cjx.py  mmm.py  zzz.py
               

    ls -i指令:列出整個目錄檔案,即檔案名和inode号碼

    要檢視檔案的詳細資訊就要根據inode号碼通路inode節點,讀取資訊

    [root@ccc test]# ls -i
    584529 cjx.py  584531 mmm.py  584530 zzz.py
               
  • FAT檔案系統

    U盤采用的檔案系統一般為FAT格式。

    FAT格式的檔案系統沒有inode,每個block号碼都記錄在前一個block當中。

    檔案系統無法一次知道四個block号碼,隻能将前block讀出後才會知道下一個block在哪裡,歸于分散時,磁盤要多轉好幾圈才能完整讀取檔案的内容。

    碎片整理:原因是檔案寫入的block過于離散,讀取性能會變差,此時通過碎片整理将同一個檔案歸屬的blocks彙整在一起,讀取會比較容易。

  • inode特殊作用

    ①檔案名包含特殊字元無法正常删除時,直接删除inode節點可以删除檔案

    ②移動檔案或重命名檔案,隻改變檔案名,不影響inode号碼

    ③打開一個檔案後,系統就以inode号碼來識别這個檔案,不考慮檔案名

    ​ 通常來說,系統無法從inode号碼來得知檔案名

    [root@ccc test]# ls -i
    584529 cjx.py  584531 mmm.py  584530 zzz.py
    [root@ccc test]# ls -i cjx.py 
    584529 cjx.py
    [root@ccc test]# vim cjx.py 
    [root@ccc test]# ls -i cjx.py 
    584533 cjx.py
    [root@ccc test]# mv cjx.py CJX.py
    [root@ccc test]# ls -i CJX.py 
    584533 CJX.py
               

    Q:每次修改完伺服器配置檔案後,為什麼需要重新加載配置檔案?

    A:因為每次修改完inode都會變,系統還是讀取原來的inode号的配置檔案,每次修改完伺服器的配置檔案都要重新開機服務,重新讀一下配置檔案。

9.11.4 軟連結、硬連結

  • 硬連結(Hard Link) ---->通過"ln 源檔案 目标檔案" 設定硬連結

    ①對硬連結檔案内容進行修改,會影響到所有檔案名

    ②硬連結檔案與源檔案具有相同inode的不同檔案名。一個檔案隻能有一個inode号,但多個檔案的inode号可以相同

    ③删除硬連結或源檔案之一,不影響另一個檔案名的通路,除非都删掉

    ​ 硬連結允許一個檔案擁有多個有效路徑,使用者可以建立硬連結連接配接到重要檔案以防誤删

    ④建立目錄自動生成的兩個目錄項"."和".."

    ​ "."的inode号碼是目前目錄的inode号碼,等同于目前目錄的硬連結

    ​ ".."的inode号碼是目前目錄父目錄的inode号碼,等同于父目錄的硬連結

    ​ 任何一個目錄的硬連結總數=2+他的子目錄總數(含隐藏目錄)

    ⑤删除所有的硬連結,資料會在被磁盤檢查或新資料寫入時删除回收

    ⑥通過rm -rf删除硬連結

    ⑦目錄不可建立硬連結,且硬連結無法跨區

  • 軟連結(符号連結Symbolic Link) ---->通過"ln -s 源檔案 目标檔案" 建立軟連結

    ①對軟連結的源檔案或目标檔案内容進行修改,會影響到所有檔案名

    ②軟連結檔案與源檔案具有不同的inode号

    ③删除軟連結檔案的源檔案,軟連結檔案将無法使用

    ④軟連結作用:軟體更新、企業代碼釋出、不友善目錄移動

    ⑤删除源檔案後,軟連結檔案無效,也應一起删除以便回收

    ⑥通過rm -rf删除軟連結

    ⑦可以對目錄建立軟連結,且軟連結可以跨分區

  • 示例
    ==============================硬連結===================================
    [root@ccc ~]# touch aaa.py
    [root@ccc ~]# ln aaa.py bbb.py
    [root@ccc ~]# ls -i aaa.py 
    8493577 aaa.py
    [root@ccc ~]# ls -i bbb.py 
    8493577 bbb.py
    [root@ccc ~]# ll aaa.py 
    -rw-r--r-- 2 root root 0 10月 28 22:52 aaa.py
    [root@ccc ~]# ll bbb.py 
    -rw-r--r-- 2 root root 0 10月 28 22:52 bbb.py
    [root@ccc ~]# 
    ==============================軟連結===================================
    [root@ccc test]# touch 1.py
    [root@ccc test]# ln -s 1.py 2.py
    [root@ccc test]# ls -i 1.py 
    584530 1.py
    [root@ccc test]# ls -i 2.py 
    584531 2.py
    [root@ccc test]# ll 1.py   # 硬連結數為1
    -rw-r--r-- 1 root root 0 10月 28 22:57 1.py
    [root@ccc test]# ll 2.py   # 硬連結數為1
    lrwxrwxrwx 1 root root 4 10月 28 22:57 2.py -> 1.py
    [root@ccc test]# rm -rf 1.py 
    [root@ccc test]# ll 2.py   # 删掉1.py,2.py不可用
    lrwxrwxrwx 1 root root 4 10月 28 22:57 2.py -> 1.py
    
    [root@ccc test]# mkdir ./dir1
    [root@ccc test]# ln ./dir1 ./dir2
    ln: "./dir1": 不允許将硬連結指向目錄
    [root@ccc test]# ln -s ./dir1 ./dir2
    [root@ccc test]# ll
    總用量 0
    drwxr-xr-x 2 root root 6 10月 28 23:00 dir1
    lrwxrwxrwx 1 root root 6 10月 28 23:01 dir2 -> ./dir1
               

9.11.5 實戰應用

  • 磁盤有空間但建立不了檔案

    df -h檢視磁盤使用情況(此時磁盤空間足夠)

    df -i檢視磁盤的索引節點(inode)(此時IUsed=100%)

    原因:數量衆多的小位元組緩存檔案占用大量的inode,但占用的block不多

    解決方案:

    ①删除目錄中部分檔案,釋放分區一部分inode

    ②備份好檔案,然後删除這些檔案來釋放inode,然後建立一個新檔案夾。

    ​ 在cache2下挂在一個新分區sda4,下次寫資料寫到新分區cache2目錄下

    tips:inode分區完後不增加inode數量,改變inode大小

  • 其他場景

    大量小檔案問題:

    可能會使inode耗盡,使得檔案無法建立(磁盤使用率低)

    方案:将block劃分小一點

    大檔案問題:

    一個檔案占用多個block,是的檔案讀寫速率慢

    方案:将block劃分大一點

    ext檔案系統---->xfs檔案系統
  • 面試題:Linux中軟連結與硬連結差別

    1、從定義: linux系統中,連結有兩種,一種被稱為軟連結,類似于快捷方式,存放指向原檔案inode的資訊,與原檔案inode不同。 一種是硬連結,與原檔案有相同的inode,可以指向資料block。

    2、從建立方式:硬連結指令In 原檔案 目标檔案,軟連結指令ln -s 原檔案目 标檔案

    3、從建立對象: In指令不能對目錄建立硬連結,但是可以對目錄建立軟連結。因為軟連結可以跨越檔案系統,硬連結則不能。對目錄和為客戶建立的檔案軟連結經常用到。

    4、删除軟連結檔案,對硬連結和原檔案無影響。

    5、删除檔案硬連結,對原檔案及軟連結檔案無影響

    6、删除原檔案,對硬連結讀取資料無影響,軟連結則失效。會出現紅底白字狀。

    7、同時删除原檔案和硬連結,原檔案才會被真正删除

    8、很多硬體裝置中的快照原理,類似于硬連結原理