1.歸檔
tar(tape archiving program),最早是一個磁盤歸檔程序。tar命令用于文件的打包(歸檔),可以將若干😈文件或者目錄😈打包成一個文件,既利于文件管理,也方便壓縮和文件的網絡傳輸。
1.1tar命令格式
命令格式: tar 主選項 [輔助選項] 文件或目錄
常用主選項:
-A,–catenate,–concatenate:將若干tar文件合成一個tar文件
-c,–create:創建一個新的tar文件
-d,–diff,–compare:比較tar文件或文件系統的不同之處。
–delete:從tar文件中刪除文件,但不能把磁帶文件刪除
-r,–append:在tar文件尾部追加文件。
-t,–list:顯示tar文件內容
-u,–update:更新tar文件。
-x,–extra,–get:從tar文件中取出文件。
-v 顯示命令執行過程中的詳細信息(verbose),會列出正在添加到歸檔的文件
-z:使用gzip壓縮/解壓縮文件(不僅可歸檔,也可壓縮,但tar主要用于打包)
1.2tar命令使用
1)tar -cfv gone.tar ./*
tar:是 Linux 下用于文件歸檔的命令工具
-c:表示創建新的歸檔文件(create)
-f:指定歸檔文件的名稱(file),后面必須緊跟文件名
-v:顯示命令執行過程中的詳細信息(verbose),會列出正在添加到歸檔的文件
gone.tar:要創建的歸檔文件名稱
./:表示當前目錄
*:通配符,表示當前目錄下的所有文件和子目錄
//將當前目錄下的所有文件和子目錄打包壓縮成一個名為 gone.tar 的歸檔文件,并在執行過程中顯示正在處理的文件列表。
2) tar -tf gone.tar
-t:表示列出歸檔文件中的內容(list)
-f:指定要操作的歸檔文件名稱(file),后面必須緊跟文件名
//列出 gone.tar 歸檔文件中包含的所有文件和目錄的名稱,但不會提取這些文件,只是查看歸檔內容。
3) tar -xvf gone.tar
-x:表示提取歸檔文件中的內容(extract)
-v:顯示命令執行過程中的詳細信息(verbose),會列出正在提取的文件
-f:指定要操作的歸檔文件名稱(file),后面必須緊跟文件名
//將 gone.tar 歸檔文件中的所有文件和目錄提取到當前工作目錄中,并在執行過程中顯示正在提取的文件列表。
4) tar -rf gone.tar myfile
//將 myfile(可以是單個文件或目錄)添加到已有的 gone.tar 歸檔文件尾部。
5) # tar -czvf aaa.tar.gz /aaa
將 /aaa 目錄(或文件)打包并通過 gzip 算法壓縮,生成一個名為 aaa.tar.gz 的壓縮歸檔文件,并在過程中顯示詳細的處理信息。
6)tar -xvf aaa.tar
將 aaa.tar 歸檔文件中的所有內容(文件和目錄)提取到當前工作目錄中,并在提取過程中顯示每個被處理的文件名稱。
7)tar -zxvf aaa.tar.gz
💤 -z:表示使用 gzip 解壓縮
先對 aaa.tar.gz 進行 gzip 解壓縮,再提取其中的 tar 歸檔內容到當前工作目錄,并在過程中顯示詳細的處理信息。
8) tar -zxvf aaa.tar.gz -C /home/aaa
將 aaa.tar.gz 壓縮包中的所有內容,解壓到 /home/aaa 目錄下,而不是當前工作目錄,并在過程中顯示詳細的文件處理信息。
9)tar -cvf archive.tar file1 file2
將 file1 和 file2 兩個文件打包成 archive.tar 歸檔文件
10)touch file3;tar -r myfiles.tar file3
先創建 file3 文件,再將其添加到已存在的 myfiles.tar 歸檔中
1、用tar命令歸檔/myfile目錄下的文件,指明創建文件并列出詳細過程。文件名為myfiles.tar
2、把文件file1,file2打包為archive.tar
3、從打包文件myfiles.tar中取出文件。
4、創建file3并追加到名稱為myfiles.tar文件
5、將當前目錄打包為file.tar.gz。
6、把打包文件解壓至當前目錄下。
7、把打包壓縮文件解至/test中。
1、用tar命令歸檔/myfile目錄下的文件,指明創建文件并列出詳細過程。文件名為myfiles.tar
tar -cvf myfiles.tar /myfile
2、把文件file1,file2打包為archive.tar
tar -cvf archive.tar file1 file2
3、從打包文件myfiles.tar中取出文件。
tar -xvf myfile.tar
4、創建file3并追加到名稱為myfiles.tar文件
touch file3;tar -r myfiles.tar file3
5、將當前目錄打包為file.tar.gz。
tar -czvf file.tar.gz ./
6、把打包文件解壓至當前目錄下。
tar -xzvf file.tar.gz
7、把打包壓縮文件解至/test中。
tar -xzvf file.tar.gz -C /test
2.壓縮
打包(歸檔)指的是將多個文件和目錄集中存儲在一個文件中,歸檔文件沒有經過壓縮,因此,它占用的空間是其中所有文件和目錄的總和;
壓縮是指利用算法將文件進行處理,以達到保留最大文件信息,而讓文件體積變小的目的。其基本原理為,通過查找文件內的重復字節,建立一個相同字節的詞典文件,并用一個代碼表示實現縮小文件體積的目的。壓縮又可以分為有損壓縮和無損壓縮。無損壓縮很好理解,指的是壓縮數據必須準確無誤;有損壓縮指的是即便丟失個別的數據,對文件也不會造成太大的影響。采用壓縮工具對文件進行壓縮,生成的文件稱為壓縮包,該文件的體積通常只有原文件的一半甚至更小。需要注意的是,壓縮包中的數據無法直接使用,使用前需要利用壓縮工具將文件數據還原,此過程又稱為解壓。
2.1zip命令
zip [選項] 壓縮包名 源文件或源目錄列表
💦注意,zip 壓縮命令需要手工指定壓縮之后的壓縮包名(較麻煩,Linux中不常用),注意寫清楚擴展名,以便解壓縮時使用。
-r 遞歸壓縮目錄,及將指定目錄下的所有文件以及子目錄全部壓縮。
-m 將文件壓縮之后,刪除原始文件,相當于把文件移到壓縮文件中。
-v 顯示詳細的壓縮過程信息。
-q 在壓縮的時候不顯示命令的執行過程。
-壓縮級別 壓縮級別是從 1~9 的數字,-1 代表壓縮速度更快,-9 代表壓縮效果更好。
-u 更新壓縮文件,即往壓縮文件中添加新文件。
2.2unzip命令
unzip [選項] 壓縮包名
unzip 命令可以查看和解壓縮 zip 文件。
-d 目錄名 將壓縮文件解壓到指定目錄下。
-n 解壓時并不覆蓋已經存在的文件。
-o 解壓時覆蓋已經存在的文件,并且無需用戶確認。
-v 查看壓縮文件的詳細信息,包括壓縮文件中包含的文件大小、文件名以及壓縮比等,但并不做解壓操作。
-t 測試壓縮文件有無損壞,但并不解壓。
-x 文件列表 解壓文件,但不包含文件列表中指定的文件。
2.3gzip命令
gzip [選項] 源文件
gzip經常用來對文件進行壓縮和解壓縮的命令,其擴展名通常標記為“.gz”。只能用來壓縮文件,不能壓縮目錄,即便指定了目錄,也只能壓縮目錄內的所有文件。
-c 將壓縮數據輸出到標準輸出中,并保留源文件。
-d 對壓縮文件進行解壓縮。
-r 遞歸壓縮指定目錄下以及子目錄下的所有文件。
-v 對于每個壓縮和解壓縮的文件,顯示相應的文件名和壓縮比。
-l 對每一個壓縮文件,顯示以下字段:壓縮文件的大小;未壓縮文件的大小;壓縮比;未壓縮文件的名稱。
-數字 用于指定壓縮等級,-1 壓縮等級最低,壓縮比最差;-9 壓縮比最高。默認壓縮比是 -6。
1)gzip -c /abc.txt > aaa.gz
-c:表示將壓縮數據輸出到標準輸出而不是覆蓋原文件
/abc.txt:要壓縮的源文件路徑
/ > :是 shell 的重定向符號,用于將前面命令的輸出寫入到指定文件
aaa.gz:壓縮后生成的目標文件名
對 /abc.txt 文件進行 gzip 壓縮,并將壓縮結果保存為 aaa.gz 文件,同時保持原文件 /abc.txt 不被刪除或修改。與直接使用 gzip /abc.txt 相比,這條命令的優勢是不會刪除原始文件,而是生成一個新的壓縮文件,適合需要保留源文件的場景。
2)gzip -d /abc.txt.gz
-d 表示解壓縮(decompress)
將 /abc.txt.gz 壓縮文件解壓縮,生成原始文件 /abc.txt
解壓縮后,原壓縮文件 /abc.txt.gz 會被刪除
3)gzip -dv /abc.txt.gz
-d 表示解壓縮,-v 表示顯示詳細信息
作用:解壓縮 /abc.txt.gz 并顯示解壓縮過程的詳細信息(如文件名、壓縮率等)
示例輸出可能為:/abc.txt.gz: 50.0% – replaced with /abc.txt
4)gzip -tv /abc.txt.gz
-t 表示測試壓縮文件的完整性(test),-v 表示顯示詳細信息
作用:檢查 /abc.txt.gz 文件是否完好無損,不會進行解壓縮操作
如果文件正常,會顯示類似:/abc.txt.gz: OK
如果文件損壞,會提示錯誤信息
2.4gunzip命令
gunzip [選項] 文件
它用于解壓被 gzip 壓縮過的文件(擴展名為 .gz)。
對于解壓被 gzip 壓縮過的文件,還可以使用 gzip 自己,即 gzip -d 壓縮包。
-r 遞歸處理,解壓縮指定目錄下以及子目錄下的所有文件。
-c 把解壓縮后的文件輸出到標準輸出設備。
-f 強制解壓縮文件,不理會文件是否已存在等情況。
-l 列出壓縮文件內容。
-v 顯示命令執行過程。
-t 測試壓縮文件是否正常,但不對其做解壓縮操作。
2.5bzip2 命令
bzip2 [選項] 源文件
bzip2 命令同 gzip 命令類似,只能對文件進行壓縮(或解壓縮),當執行壓縮任務完成后,會生成一個以“.bz2”為后綴的壓縮包。
??從理論上來講,“.bz2”格式的算法更先進、壓縮比更好;而 “.gz”格式相對來講的時間更快。
-k bzip2 在壓縮或解壓縮任務完成后,會刪除原始文件,若要保留原始文件,可使用此選項。(建議使用bzip2時加上-k)
-f bzip2 在壓縮或解壓縮時,若輸出文件與現有文件同名,默認不會覆蓋現有文件,若使用此選項,則會強制覆蓋現有文件。
-d 對壓縮文件進行解壓縮。
-t 測試壓縮包文件的完整性。
-v 壓縮或解壓縮文件時,顯示詳細信息。
-數字 這個參數和 gzip 命令的作用一樣,用于指定壓縮等級,-1 壓縮等級最低,壓縮比最差;-9 壓縮比最高
2.6bunzip2 命令
bunzip2 [選項] 源文件
bunzip2 命令的使用和 gunzip 命令大致相同,bunzip2 命令只能用于解壓文件,即便解壓目錄,也是解壓該目錄以及所含子目錄下的所有文件。
-k 解壓縮后,默認會刪除原來的壓縮文件。若要保留壓縮文件,需使用此參數。
-f 解壓縮時,若輸出的文件與現有文件同名時,默認不會覆蓋現有的文件。若要覆蓋,可使用此選項。
-v 顯示命令執行過程。
-l 列出壓縮文件內容。
3.用戶管理
3.1用戶帳號的分類
超級用戶(UID=0)Root
普通用戶(1000<=UID<max=60000): 操作權限受到限制
偽用戶(系統用戶)(關機、系統調用等) (UID=1—999):限制本機登錄
3.2用戶帳號包含的信息
用戶名:
口令:(密碼)
UID:用戶唯一標識符
GID:用戶組的唯一標識符
用戶描述信息:
用戶主目錄:用戶登錄的初始目錄
SHELL類型:設置SHELL程序的種類
root下 cat /etc/passwd會顯示用戶信息,各個信息由:分開
root:x:0:0:root:/root:/bin/bash
shutdown(關機):x:6:0:shutdown:/sbin:/sbin/shutdown
3.3用戶賬號文件–口令文件(/etc/passwd)
該文件用于用戶登錄時校驗用戶的登錄名、加密的口令數據項、用戶ID(UID)、 默認的用戶分組ID(GID)、GECOS字段、用戶登錄子目錄以及登錄后使用的shell。
root下 cat /etc/passwd會顯示用戶信息,各個信息由:分開
root:x:0:0:root:/root:/bin/bash
shutdown(關機):x:6:0:shutdown:/sbin:/sbin/shutdown
nobody:x:65534(補碼信息(-2的16位補碼)):65534:Kernel Overflow User:/:/sbin/nologin(其他訪問我的系統的root用戶)
3.4用戶影子文件–(/etc/shadow)
文件中每行代表一個用戶,同樣使用 “:” 作為分隔符,不同之處在于,每行用戶信息被劃分為 9 個字段。
每個字段的含義如下:用戶名:加密密碼:最后一次修改時間(1979年1月1日起算的時間戳):最小修改時間間隔:密碼有效期(99999表示無限期):密碼需要變更前的警告天數:密碼過期后的寬限時間:賬號失效時間:保留字段
4.用戶管理操作
4.1添加新用戶
useradd [參數] 用戶名
-u UID //指定用戶的UID值(如果不指定,默認從1000遞增)
-g 組名 //指定用戶所屬的默認組
-G 組名 //指定用戶附加組
-d 路徑 //指定用戶主目錄(若不指定, 默認為/home/用戶名)
-e 時間 //指定用戶帳號有效日期(YYYY-MM-DD)
4.2設置用戶口令
passwd [選項] [用戶名]
無選項:設置用戶密碼
-d (delete) //刪除用戶口令
-l (lock) //暫時鎖定指定的用戶賬號
-u (unlock)//解除指定用戶賬號的鎖定
-S (status) //顯示指定用戶賬號的狀態
4.3修改用戶信息
usermod [參數] 用戶名
-l 新用戶名 當前用戶名 //更改用戶名
-d 路徑 //更改用戶主目錄
-G 組名 //修改附加組
-L 用戶帳號名 //鎖定用戶帳號(不能登錄)
-U 用戶帳號名 //解鎖用戶帳號
4.4刪除用戶
userdel [參數] 用戶名
-r // 同時刪除用戶主目錄
4.5切換用戶身份
su [-] [用戶名]
實例:
#su – // 切換到超級用戶
#su tom
普通用戶切換到root需要密碼,root切換其他不需要。
5.案例
1.新建一個user1用戶,UID、GID、主目錄均按默認;
2.新建一個user2用戶,UID=1200、其余按默認;
3.新建一個user3用戶,默認主目錄為/abc、其余默認;并觀察這三個用戶的信息有什么不同;
4.分別為以上三個用戶設置密碼為123456;
5.把user1用戶改名為u1,UID改為1700,主目錄為/test,密碼改為12345678;
6.將用戶user3的主目錄改名為/ab,并修改其附加組為group2;
7.把u1用戶鎖定,并觀察有什么變化,并解鎖賬號;
8.連同主目錄一并刪除賬號user3用戶;
所有操作要在root下,切換到root的方法:先
su
后cd~
1.新建一個user1用戶,UID、GID、主目錄均按默認;
2.新建一個user2用戶,UID=1200、其余按默認;
3.新建一個user3用戶,默認主目錄為/abc、其余默認;并觀察這三個用戶的信息有什么不同;
4.分別為以上三個用戶設置密碼為123456;
5.把user1用戶改名為u1,UID改為1700,主目錄為/test,密碼改為12345678;
查看
6.將用戶user3的主目錄改名為/ab,并修改其附加組為group2;
7.把u1用戶鎖定,并觀察有什么變化,并解鎖賬號;
8.連同主目錄一并刪除賬號user3用戶;