- 曝光:Linux企業運維實戰
- 吳光科
- 1485字
- 2019-10-16 10:21:57
6.2 tar軟件包管理
Linux操作系統除了使用RPM管理工具對二進制軟件包管理之外,還可以通過tar、zip、jar等工具對源碼包軟件進行管理。
6.2.1 tar命令參數詳解
tar命令參數詳解如下:
□-A,--catenate,--concatenate:將存檔與已有的存檔合并。
□-c,--create:建立新的存檔。
□-d,--diff,--compare:比較存檔與當前文件的不同之處。
□--delete:從存檔中刪除。
□-r,--append:附加到存檔結尾。
□-t,--list:列出存檔中文件的目錄。
□-u,--update:僅將較新的文件附加到存檔中。
□-x,--extract,--get:解壓文件。
□-j,--bzip2,--bunzip2:有bz2屬性的軟件包。
□-z,--gzip,--ungzip:有gz屬性的軟件包。
□-b,--block-size N:指定塊大小為N?512字節(默認時N=20)。
□-B,--read-full-blocks:讀取時重組塊。
□-C,--directory DIR:指定新的目錄。
□--checkpoint:讀取存檔時顯示目錄名。
□-f,--file[HOSTNAME:]F:指定存檔或設備,后接文件名稱。
□--force-local:強制使用本地存檔,即使存在克隆。
□-G,--incremental:建立老GNU格式的備份。
□-g,--listed-incremental:建立新GNU格式的備份。
□-h,--dereference:不轉儲動態鏈接,轉儲動態鏈接指向的文件。
□-i,--ignore-zeros:忽略存檔中的0字節塊(通常意味著文件結束)。
□--ignore-failed-read:在不可讀文件中作0標記后再退出。
□-k,--keep-old-files:保存現有文件,從存檔中展開時不進行覆蓋。
□-K,--starting-file F:從存檔文件F開始。
□-l,--one-file-system:在本地文件系統中創建存檔。
□-L,--tape-length N:在寫入N?1024個字節后暫停,等待更換磁盤。
□-m,--modification-time:當從一個檔案中恢復文件時,不使用新的時間標簽。
□-M,--multi-volume:建立多卷存檔,以便在幾個磁盤中存放。
□-O,--to-stdout:將文件展開到標準輸出。
□-P,--absolute-paths:不要從文件名中去除“/”。
□-v,--verbose:詳細顯示處理的文件。
□--version:顯示tar程序的版本號。
□--exclude:file不把指定文件包含在內。
□-X,--exclude-from FILE:從指定文件中讀入不想包含的文件列表。
6.2.2 tar企業案例演示
tar企業案例演示如下:
□tar-cvf jfedu.tar.gz jfedu:打包jfedu文件或者目錄,打包后名稱為jfedu.tar.gz。
□tar-tf jfedu.tar.gz:查看jfedu.tar.gz包中內容。
□tar-rf jfedu.tar.gz jfedu.txt:將jfedu.txt文件追加到jfedu.tar.gz中。
□tar-xvf jfedu.tar.gz:解壓jfedu.tar.gz程序包。
□tar-czvf jfedu.tar.gz jfedu:使用gzip格式打包并壓縮jfedu目錄。
□tar-cjvf jfedu.tar.bz2 jfedu:使用bzip2格式打包并壓縮jfedu目錄。
□tar-czf jfedu.tar.gz ? -X list.txt:使用gzip格式打包并壓當前目錄所有文件,排除list.txt中記錄的文件。
□tar-czf jfedu.tar.gz ? --exclude=zabbix-3.2.4.tar.gz--exclude=nginx-1.12.0.tar. gz:使用gzip格式打包并壓縮所有文件和目錄,排除zabbix-3.2.4.tar.gz和nginx-1. 12.0.tar.gz軟件包。
6.2.3 tar實現Linux操作系統備份
tar命令工具除了用于日常打包、解壓源碼包之外,最大的亮點還可以用于Linux操作系統文件及目錄的備份。使用tar-g可以基于GNU格式做增量備份,備份原理是檢查目錄和文件的atime、mtime、ctime屬性是否被修改。文件及目錄時間屬性詳解如下:
□文件被訪問的時間(access time,atime);
□文件內容被改變的時間(modified time,mtime);
□文件寫入、權限更改的時間(change time,ctime)。
總結:更改文件內容mtime和ctime都會改變,但ctime可以在mtime未發生變化時被更改。例如修改文件權限文件mtime時間不變而ctime時間改變。tar增量備份案例演示步驟如下:
(1)/root目錄創建jingfeng文件夾,同時在jingfeng文件夾中新建jf1.txt、jf2.txt文件,如圖6-1所示。

圖6-1 創建jingfeng目錄及文件
(2)使用tar命令第一次完整備份jingfeng文件夾,-g指定快照snapshot文件,第一次沒有該文件則會自動創建,如圖6-2所示。

圖6-2 tar備份jingfeng目錄中文件

(3)使用tar命令第一次完整備份jingfeng文件夾會生成快照文件/data/backup/ snapshot,后期增量備份會以snapshot文件為參考。在jingfeng文件夾中再創建jf3.txt、jf4. txt文件,然后再通過tar命令增量備份jingfeng文件夾所有內容,如圖6-3所示。

圖6-3 tar增量備份jingfeng目錄中文件

如圖6-3所示,增量備份時需-g指定第一次完整備份的快照snapshot文件,同時增量打包的文件名不能與第一次備份后的文件名重名,通過tar-tf可以查看打包后的文件內容。
6.2.4 shell+tar實現增量備份
企業中日常備份的數據包括/boot、/etc、/root、/data等目錄。備份的策略為每周一至周六執行增量備份,每周日執行全備份。在企業中備份操作系統數據均使用shell腳本完成,此處auto_backup_system.sh備份腳本供參考。后面章節會系統講解shell腳本,腳本內容如下:


- 樂學Windows操作系統
- 嵌入式Linux開發技術
- Google系統架構解密:構建安全可靠的系統
- BPEL and Java Cookbook
- Windows Server 2012 Hyper-V Cookbook
- Windows Phone 7.5 Data Cookbook
- 嵌入式操作系統(Linux篇)(微課版)
- 計算機應用基礎(Windows 7+Office 2016)
- HTML5 Enterprise Application Development
- Windows 10從新手到高手
- Linux軟件管理平臺設計與實現
- Learn SwiftUI
- Linux應用大全 基礎與管理
- Windows Server 2008組網技術與實訓(第3版)
- Hadoop Real-World Solutions Cookbook