第1章 壓縮檔案
1.1 tar壓縮 zcvf C t x P
tar壓縮
[root@oldboyedu-lnb ~]#tar zcvf hosts.tar.gz z # 使用gzip方式壓縮 c # create 建立壓縮包 v # verbose 顯示壓縮的過程 f # 指定檔案 x # 解壓 t # 檢視壓縮包的檔名稱 -C # 指定解壓到哪裡 -P # 不提示從成員中刪除/
為什麼要壓縮
1.1.1 不常用的檔案 佔用磁碟空間
1.1.2 壓縮後的檔案 備份檔案 傳送到備份伺服器
伺服器-->傳送檔案到備份伺服器--->每個檔案傳輸都會佔用1次IO請求
上千個檔案-->備份伺服器--->建立上千次的IO請求
上千個檔案壓縮成一個檔案-->和伺服器建立1次IO 大大降低了伺服器的IO請求
1.1.3 什麼時間壓縮
壓縮最耗費伺服器的CPU
業務的低谷期進行壓縮和傳送資料
1.2 壓縮其他的命令
zip bz bz2
# 提前安裝zip命令 yum -y install zip
zip壓縮:
-q |
不顯示指令執行過程 |
-r |
遞迴處理,將指定目錄下的所有檔案和子目錄一併處理 |
-z |
替壓縮檔案加上註釋 |
-v |
顯示指令執行過程或顯示版本資訊 |
-n<字尾字串> |
不壓縮具有特定字尾字串的檔案 |
/home/html/ 這個目錄下所有檔案和資料夾打包為當前目錄下的 html.zip:
[root@linuxcool ~]# zip -q -r html.zip /home/html 壓縮檔案 cp.zip 中刪除檔案 a.c: [root@linuxcool ~]# zip -dv cp.zip a.c 把/home目錄下面的mydata目錄壓縮為mydata.zip: [root@linuxcool ~]# zip -r mydata.zip mydata 把/home目錄下面的abc資料夾和123.txt壓縮成為abc123.zip: [root@linuxcool ~]# zip -r abc123.zip abc 123.txt 將 logs目錄打包成 log.zip: [root@linuxcool ~]# zip -r log.zip ./logs
gzip 壓縮
語法格式:gzip [引數]
常用引數:
-a |
使用ASCII文字模式 |
-d |
解開壓縮檔案 |
-f |
強行壓縮檔案 |
-l |
列出壓縮檔案的相關資訊 |
-c |
把壓縮後的檔案輸出到標準輸出裝置,不去更動原始檔案 |
-r |
遞迴處理,將指定目錄下的所有檔案及子目錄一併處理 |
-q |
不顯示警告資訊 |
參考例項
把rancher-v2.2.0目錄下的每個檔案壓縮成.gz檔案:
[root@linuxcool ~]# gzip *
把上例中每個壓縮的檔案解壓,並列出詳細的資訊:
[root@linuxcool ~]# gzip -dv *
遞迴地解壓目錄:
[root@linuxcool ~]# gzip -dr rancher.gz [root@oldboyedu-lnb ~]# zip zip.gz 1.txt 2.txt [root@oldboyedu-lnb opt]# unzip zip.gz # 常用 Archive: zip.gz inflating: 1.txt extracting: 2.txt
unzip 解壓到指定的位置 -d
[root@oldboyedu-lnb ~]# zip test.zip 1.txt adding: 1.txt (deflated 36%) [root@oldboyedu-lnb ~]# unzip test.zip -d /opt/ Archive: test.zip inflating: /opt/1.txt [root@oldboyedu-lnb ~]# ll /opt/ total 4 -rw-r--r-- 1 root root 1177 Aug 4 08:02 1.txt
第2章 檔案的許可權
2.1 許可權的作用 決定了使用者對檔案的使用許可權
rwxr--r--
2.2 許可權用來賦予給使用者的
2.3 前三位 屬主
中三位 屬組
後三位 其他使用者
2.4 rwx對應的數字
r 4
w 2
x 1
第3章 檔案的屬主
3.1 系統使用者
作用:
登陸系統 管理資料 管理服務
3.2 系統識別使用者
系統如何識別使用者的: UID 使用者唯一標識 類似於身份證 user dentification UID是一個數字
系統預設使用者的分類:
使用者 UID 作用
1.管理員使用者: 0 最高管理者 相當於皇帝 擁有最高的許可權 /root [root@oldboyedu-lnb~]# id root uid=0(root) gid=0(root) groups=0(root) 2.虛擬使用者: 1-999 sshd虛擬使用者 系統中每一個服務啟動 都必須使用一個使用者 不能登陸作業系統 沒有家目錄 [root@oldboyedu-lnb~]# id sshd uid=74(sshd) gid=74(sshd) groups=74(sshd) 3.普通使用者: 1000+ 登陸系統 維護系統 常用的系統使用者 為了系統安全建立的使用者
[root@oldboyedu-lnb~]# id oldboy uid=1001(oldboy) gid=1001(oldboy) groups=1001(oldboy) [root@oldboyedu-lnb~]# id alexdsx id: alexdsx: no such user [root@oldboyedu-lnb~]# id alex uid=1002(alex) gid=1002(alex) groups=1002(alex)
3.3 檔案的屬組 瞭解
, 預設建立的使用者 都會自動建立以自身名字命名的組名 oldboy使用者--->建立了oldboy組
當前組內的成員 對檔案或目錄擁有什麼許可權
一個使用者可以屬於多個組 oldboy屬於alex組 root組 test組....
多個使用者可以屬於1個組 oldboy alex lidao 使用者---> 屬於test組
多個使用者可以屬於多個組 oldboy--> alex lidao alex--> oldboy lidao
第4章 索引節點和塊裝置
4.1 inode 和 block
在建立檔案系統的時候自動生成的定量的inode和block
inode 索引節點 index node
特點:
類似於書的目錄
相當於超市的入口
inode的檢視方式 ls -li
inode定義: 儲存檔案的屬性及block的具體位置
一個檔案最少佔用一個inode和1個block
一個inode可以被多個檔案佔用
在同一個檔案系統中相同的inode號稱為硬連結?
inode預設的大小256B
檔名在上級目錄的block中
4.1.1 磁碟的使用過程:
磁碟 地皮
RAID 地皮組合在一起 統一規劃
分割槽 寫字樓 餐廳 遊樂場 宿舍
格式化 打掃衛生 清理
建立檔案系統 精裝修 生成inode和block 中式 韓式 美式 歐式.... NTFS FAT32 XFS ext2 ext3 ext4
掛載 安裝房間的門
4.2 block 快裝置
特點:
儲存檔案資料的
建立檔案最少需要一個1個inode和1個block
預設的block的大小是4K
檔案太少、浪費磁碟空間 儲存單位是按4K方式儲存的
10K檔案-->佔用三個block
磁碟的讀取按照block單位進行讀取 讀取1個block會佔用1次IO
IO input output 輸入輸出的次數決定了磁碟的使用效率
讀取1個block佔用1s 讀取10k--->佔用三秒
4.2.1 檢視inode和block
inode: ls -li
df -i 檢視當前系統inode使用情況
block: df -h 檢視的是block空間的總大小 擴充套件:如何檢視預設的block大小 調整block大小
4.2.2 使用過程中磁碟無法儲存內容
4.2.2.1 檢視inode使用情況
什麼情況下inode會被佔滿
1個檔案最少佔用1個inode 當有大量小檔案的時候 inode會被佔滿
4.2.2.2 檢視block使用情況
什麼情況下block佔滿
檔案太大 其中一個滿 都無法正常儲存內容
4.2.2.3 block快儲存 大了好還是小了好
說明:10K 檔案 block 4K 佔用3個block
磁碟IO 輸入輸出的次數,決定了磁碟的效能
10M 消耗block少 IO次數少 硬碟效能沒影響 10G 消耗block多 IO次數多 磁碟效能降低 大檔案較多 視訊/圖片/音訊 block調大一點 IO消耗較少 小檔案較多 文件/網站程式碼 block小一些 節省磁碟空間
4.3 軟連結和硬連結
硬連結:
在同一個檔案系統中有相同的inode號的檔案互為硬連結
硬連結 檔案的多個入口 類似於超市有多個入口 堵死一個門不影響檔案的正常使用
相當於複製多個inode號碼
4.3.1 建立硬連結
ln 原始檔 目標檔案
[root@oldboyedu-lnb test]# ln test.txt hard_link.txt [root@oldboyedu-lnb test]# ll -i total 0 50996266 -rw-r--r-- 2 root root 0 Aug 4 10:35 hard_link.txt 50996266 -rw-r--r-- 2 root root 0 Aug 4 10:35 test.txt
4.3.2 硬連結的特點
1.對已存在的檔案做硬連結 2.inode相同 屬性相同 3.只能在同一個分割槽內進行建立 同一個檔案系統 4.不能對目錄建立硬連結,只能對檔案建立硬連結 擴充套件瞭解 5.刪除一個硬連結不影響其他的相同inode號的檔案 6.目錄的硬連結預設是2個 7.可以在任意一個入口進入到檔案修改內容 檢視檔案的時候都會發生變 8.刪除所有的相同的inode號 檔案被真正的刪除
4.3.3 硬連結的作用
提高系統的安全性
4.4 軟連結
說明: 類似windows的快捷方式,軟連結存放了指向原始檔的指標
4.4.1 建立軟連結:
ln -s 原始檔 目標檔案
[root@oldboy~/oldboy]#ll -rw-r--r--. 1 root root 5 5月 13 11:06 1.txt [root@oldboy~/oldboy]#ln -s 1.txt s_1.txt [root@oldboy~/oldboy]#ll 總用量 4 rw-r--r--. 1 root root 5 5月 13 11:06 1.txt lrwxrwxrwx. 1 root root 5 5月 13 11:07 s_1.txt -> 1.txt
4.4.2 軟連結特點
1.軟連結的inode和原始檔不同 存放原始檔的路徑 指向原始檔的實體 2.刪除連結檔案不影響原始檔 3.刪除原始檔 連結檔案存在,但是無法訪問原始檔的內容 紅底白字進行閃爍 4.建立軟鏈建 ln -s 5.建立的軟連結就是普通檔案 刪除rm命令 PS:刪除的是軟連結 而不是--->file
4.4.3 軟連結作用
1.可以利用軟連結跨檔案系統的方式 處理磁碟不夠用 2.可以快速進行程式碼回滾 程式碼上線?
4.4.4 軟連結和硬連結的區別
在Linux系統中 連結分為兩種 一種是硬連結 hard link 另一種軟連結(符號連結) symbllc link
1)建立方式不同 ln直接建立硬連結 ln -s 帶s引數建立是軟連結 2)硬連結的inode號碼是相同的 軟連結Inode是不同的 3)目錄不能建立硬連結可以建立軟連結 4)刪除硬連結不影響原始檔 5)刪除檔案的軟連結原始檔則導致軟連結失效。如果刪除軟連結檔案不影響原始檔 6)同時刪除原始檔和硬連結的檔案 整個檔案才會被真正的刪除(沒有被系統呼叫情況),刪除軟連結的原始檔,則檔案被真正刪除。 7)軟連結可以跨檔案系統,硬連結不可以跨檔案系統 8)軟連結在工作中常用 建立軟連結 最好使用全路徑(絕對路徑)
[root@oldboyedu-lnb test]# ln -s /tmp/data /root/test/data
第5章 檔案時間的修改
5.1 三個時間修改
Access:# 檔案的訪問時間 cat less more head tail第一次檢視時間改變 如果檔案沒有被修改 則時間不會改變
Modify:# 檔案的修改時間 內容被修改 時間會發生變化
[root@oldboyedu-lnb~]# echo test > oldboy.txt [root@oldboyedu-lnb~]# stat oldboy.txt File: ‘oldboy.txt’ Size: 5 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 34044702 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-08-04 23:23:16.784751936 +0800 Modify: 2020-08-04 23:24:15.392326380 +0800 Change: 2020-08-04 23:24:15.392326380 +0800
Change:# 檔案的屬性修改時間 檔案屬性變化 時間就會變化
[root@oldboyedu-lnb~]# chmod +x oldboy.txt [root@oldboyedu-lnb~]# stat oldboy.txt File: ‘oldboy.txt’ Size: 10 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 34307462 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-08-04 23:25:23.213991139 +0800 Modify: 2020-08-04 23:25:23.213991139 +0800 Change: 2020-08-04 23:32:49.386364313 +0800 Birth: - [root@oldboyedu-lnb~]# mv oldboy.txt oldboy.bak [root@oldboyedu-lnb~]# stat oldboy.bak File: ‘oldboy.bak’ Size: 10 Blocks: 8 IO Block: 4096 regular file Device: 803h/2051d Inode: 34307462 Links: 1 Access: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2020-08-04 23:25:23.213991139 +0800 Modify: 2020-08-04 23:25:23.213991139 +0800 Change: 2020-08-04 23:34:00.687063165 +0800 Birth: -
5.2 find按照時間查詢檔案
-mtime # 常用
-atime
-ctime
檔案詳細資訊:
inode和block的儲存過程 理解 系統如何找到/root/oldboy/test.txt
第一步:首先查詢/目錄, 查詢/目錄的inode號碼 第二步:在/目錄下的block位置找到root的目錄名稱 第三步:找到root對應的inode號碼 第四步:root的inode號碼指向了自己的block的位置,找到oldboy目錄名稱 第五步:找到oldboy對應的inode號碼 第六步:oldboy的號碼指向了自己的block的位置,裡面儲存的是test.txt 第七步:找到了test.txt檔案 找到自身的inode號碼,指向自身的block位置 第八步:通過block位置檢視test.txt內容