第十八章 Linux中打包壓縮zip,tar命令
阿新 • • 發佈:2020-08-01
什麼是壓縮包
#單個檔案或者多個組成一個特殊的檔案,就是壓縮包
為什麼要使用壓縮包
#減少了磁碟空間
#加快了網路傳輸
壓縮包的型別
windows 壓縮包 zip rar (linux不支援)
linux zip gz tar.gz tar.bz2 tar.xz
壓縮包格式 壓縮包工具
.zip 使用zip工具打包 unzip解壓,需要指定壓縮包名
.gz 使用gzip格式進行壓縮,會刪除原始檔, gzip,預設不支援壓縮目錄
.bz2 使用bzip2格式進行壓縮,會刪除原始檔,bzip2解壓 unbzip2,預設不支援壓縮目錄
.tar.gz 先使用tar命令進行打包,使用gzip格式進行壓縮
.tar.bz2 先使用tar命令進行打包, 使用bzip2格式進行壓縮
.tar.xz 先使用tar命令進行打包,使用xz壓縮方式
如果希望windows的軟體能被linux解壓,或者linux的軟體包被windows能識別,選擇zip
Zip壓縮
總結: zip 打包壓縮 -r #遞迴打包,打包目錄 -q #打包的時候不顯示打包過程 unzip 解壓.zip格式壓縮包 -q #解壓的時候,不顯示解壓的過程 -l #顯示壓縮包的列表資訊 -d #解壓到指定的目錄中 #下載安裝工具包 [root@lxy ~]# yum install -y zip unzip [root@lxy ~]# #zip 壓縮包名 原始檔 [root@lxy ~]# zip services.zip services adding: services (deflated 80%) [root@lxy ~]# ll total 796 -rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg -rw-r--r--. 1 root root 670293 Dec 24 18:42 services -rw-r--r--. 1 root root 136227 Dec 24 18:44 services.zip
zip使用
[root@lxy ~]# zcat services.zip #檢視zip格式的壓縮檔案 [root@lxy ~]# unzip services.zip #解壓,預設解壓到當前目錄 [root@lxy ~]# zip -r etc.zip /etc #打包目錄 [root@lxy ~]# zip -rq etc.zip /etc #打包的時候不顯示打包過程 [root@lxy ~]# unzip -q etc.zip #解壓的時候不顯示解壓過程 [root@lxy ~]# unzip -l etc.zip #檢視壓縮包中的列表資訊 [root@lxy ~]# unzip -q etc.zip -d /opt/ #解壓到指定的目錄
Gzip壓縮
總結:
gzip #壓縮檔案,不能壓縮目錄
-d #解壓
-r #壓縮目錄下的所有檔案
-rd #解壓目錄下的所有壓縮檔案
zcat #檢視gzip格式的壓縮檔案
gzip使用
[root@lxy ~]# #gzip 原始檔 [root@lxy ~]# gzip services [root@lxy ~]# ll total 13064 -rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg drwxr-xr-x. 88 root root 8192 Dec 23 16:59 etc -rw-r--r--. 1 root root 12410225 Dec 24 18:50 etc.zip -rw-r--r--. 1 root root 670293 Dec 24 18:42 server -rw-r--r--. 1 root root 136088 Dec 24 18:42 services.gz [root@lxy ~]# zcat services.gz [root@lxy ~]# gzip -d services.gz #解壓 [root@lxy ~]# ll total 13584 -rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg drwxr-xr-x. 88 root root 8192 Dec 23 16:59 etc -rw-r--r--. 1 root root 12410225 Dec 24 18:50 etc.zip -rw-r--r--. 1 root root 670293 Dec 24 18:42 server -rw-r--r--. 1 root root 670293 Dec 24 18:42 services [root@lxy ~]# gzip -r etc #壓縮目錄中的所有檔案 [root@lxy ~]# gzip -rd etc #解壓整個目錄的壓縮檔案 [root@lxy ~]# yum install -y bzip2 [root@lxy ~]# bzip2 services [root@lxy ~]# ll total 13052 -rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg drwxr-xr-x. 88 root root 8192 Dec 24 19:06 etc -rw-r--r--. 1 root root 12410225 Dec 24 18:50 etc.zip -rw-r--r--. 1 root root 670293 Dec 24 18:42 server -rw-r--r--. 1 root root 123932 Dec 24 18:42 services.bz2 [root@lxy ~]# bzcat services.bz2 [root@lxy ~]# bzip2 -d services.bz2 [root@lxy ~]# ll total 13584 -rw-------. 1 root root 1429 Nov 26 20:28 anaconda-ks.cfg drwxr-xr-x. 88 root root 8192 Dec 24 19:06 etc -rw-r--r--. 1 root root 12410225 Dec 24 18:50 etc.zip -rw-r--r--. 1 root root 670293 Dec 24 18:42 server -rw-r--r--. 1 root root 670293 Dec 24 18:42 services
Tar命令
tar 打包的命令 c 建立包 z 使用gzip格式壓縮 j 使用bzip2格式壓縮 J 使用xz格式壓縮 f 指定壓縮包的名稱 v 顯示打包的過程 czf #打包使用gzip壓縮 cjf #打包使用bzip2格式壓縮 cJf #打包使用xz格式壓縮 t #顯示壓縮包列表,自動識別壓縮包格式 tf # x #解壓 ,自動識別壓縮包格式 覆蓋原壓縮包 xf P #使用絕對路徑打包 h #打包軟連線的真實檔案資料 -C #解壓到指定的目錄 X #指定排除列表檔案 --exclude= #排除指定的檔案 --exclude-from= #指定排除的列表檔案 [root@lxy ~]# tar czf service.tar.gz services [root@lxy ~]# ll total 792 -rw-r--r--. 1 root root 670293 Dec 24 19:35 services -rw-r--r--. 1 root root 136197 Dec 24 19:35 service.tar.gz [root@lxy ~]# tar cjf service.tar.bz2 services [root@lxy ~]# ll total 916 -rw-r--r--. 1 root root 670293 Dec 24 19:35 services -rw-r--r--. 1 root root 123925 Dec 24 19:36 service.tar.bz2 -rw-r--r--. 1 root root 136197 Dec 24 19:35 service.tar.gz [root@lxy ~]# tar cJf service.tar.xz services [root@lxy ~]# ll total 1016 -rw-r--r--. 1 root root 670293 Dec 24 19:35 services -rw-r--r--. 1 root root 123925 Dec 24 19:36 service.tar.bz2 -rw-r--r--. 1 root root 136197 Dec 24 19:35 service.tar.gz -rw-r--r--. 1 root root 100680 Dec 24 19:37 service.tar.xz [root@lxy ~]# tar tf service.tar.gz services [root@lxy ~]# tar tf service.tar.bz2 services [root@lxy ~]# tar tf service.tar.xz services [root@lxy ~]# tar xf service.tar.gz [root@lxy ~]# ll total 1016 -rw-r--r--. 1 root root 670293 Dec 24 19:35 services -rw-r--r--. 1 root root 123925 Dec 24 19:36 service.tar.bz2 -rw-r--r--. 1 root root 136197 Dec 24 19:35 service.tar.gz -rw-r--r--. 1 root root 100680 Dec 24 19:37 service.tar.xz [root@lxy ~]# tar xf service.tar.bz2 [root@lxy ~]# ll total 1016 -rw-r--r--. 1 root root 670293 Dec 24 19:35 services -rw-r--r--. 1 root root 123925 Dec 24 19:36 service.tar.bz2 -rw-r--r--. 1 root root 136197 Dec 24 19:35 service.tar.gz -rw-r--r--. 1 root root 100680 Dec 24 19:37 service.tar.xz [root@lxy ~]# rm -f services [root@lxy ~]# tar xf service.tar.xz [root@lxy ~]# ll total 1016 -rw-r--r--. 1 root root 670293 Dec 24 19:35 services -rw-r--r--. 1 root root 123925 Dec 24 19:36 service.tar.bz2 -rw-r--r--. 1 root root 136197 Dec 24 19:35 service.tar.gz -rw-r--r--. 1 root root 100680 Dec 24 19:37 service.tar.xz [root@lxy ~]# tar czf etc.tar.gz /etc/ tar: Removing leading `/' from member names #刪跟的操作,不是報錯,防止解壓的時候覆蓋原始檔檔案 [root@lxy ~]# ll total 9960 -rw-r--r--. 1 root root 10196757 Dec 24 19:43 etc.tar.gz [root@lxy ~]# tar xf etc.tar.gz #解壓到當前目錄 [root@lxy ~]# ll total 9972 drwxr-xr-x. 80 root root 8192 Dec 23 16:59 etc -rw-r--r--. 1 root root 10196757 Dec 24 19:43 etc.tar.gz
解決刪跟問題
#解決刪根 第一種方法: 進入根目錄進行打包 ,使用相對路徑打包 [root@lxy ~]# cd / [root@lxy /]# tar czf /root/etc-1.tar.gz etc [root@lxy /]# ll /root/ total 19932 drwxr-xr-x. 80 root root 8192 Dec 23 16:59 etc -rw-r--r--. 1 root root 10196757 Dec 24 19:47 etc-1.tar.gz -rw-r--r--. 1 root root 10196757 Dec 24 19:43 etc.tar.gz #第二種方法: 使用P選項 [root@lxy ~]# tar czPf etc-2.tar.gz /etc [root@lxy ~]# tar xf etc-2.tar.gz #解壓的時候進行刪根操作,主要是做一個保護機制 tar: Removing leading `/' from member names
解壓到指定目錄
#解壓到指定的目錄中 [root@lxy ~]# tar xf etc.tar.gz -C /opt/ [root@lxy ~]# ll /opt/ total 12 drwxr-xr-x. 80 root root 8192 Dec 23 16:59 etc [root@lxy ~]# ll /etc/grub2.cfg lrwxrwxrwx. 1 root root 22 Nov 26 20:23 /etc/grub2.cfg -> ../boot/grub2/grub.cfg [root@lxy ~]# tar czf grub.tar.gz /etc/grub2.cfg tar: Removing leading `/' from member names [root@lxy ~]# tar xf grub.tar.gz [root@lxy ~]# ll total 29884 drwxr-xr-x. 2 root root 23 Dec 24 19:55 etc -rw-r--r--. 1 root root 10196757 Dec 24 19:48 etc-1.tar.gz -rw-r--r--. 1 root root 10196675 Dec 24 19:49 etc-2.tar.gz -rw-r--r--. 1 root root 10196757 Dec 24 19:43 etc.tar.gz -rw-r--r--. 1 root root 124 Dec 24 19:54 grub.tar.gz [root@lxy ~]# ll etc total 0 lrwxrwxrwx. 1 root root 22 Nov 26 20:23 grub2.cfg -> ../boot/grub2/grub.cfg
打包軟連線檔案
#打包軟連線檔案 [root@lxy ~]# tar czhf grub-1.tar.gz /etc/grub2.cfg tar: Removing leading `/' from member names [root@lxy ~]# ll total 29888 -rw-r--r--. 1 root root 10196757 Dec 24 19:48 etc-1.tar.gz -rw-r--r--. 1 root root 10196675 Dec 24 19:49 etc-2.tar.gz -rw-r--r--. 1 root root 10196757 Dec 24 19:43 etc.tar.gz -rw-r--r--. 1 root root 1466 Dec 24 19:56 grub-1.tar.gz -rw-r--r--. 1 root root 124 Dec 24 19:54 grub.tar.gz [root@lxy ~]# tar xf grub-1.tar.gz [root@lxy ~]# ll etc total 8 -rw-r--r--. 1 root root 4229 Nov 26 20:28 grub2.cfg
排除檔案
#排除檔案 第一種方法: [root@lxy ~]# ll total 9960 -rw-r--r--. 1 root root 10196844 Dec 24 19:59 etc-1.tar.gz [root@lxy ~]# tar czf etc-2.tar.gz --exclude=/etc/services /etc tar: Removing leading `/' from member names [root@lxy ~]# ll total 19788 -rw-r--r--. 1 root root 10196844 Dec 24 19:59 etc-1.tar.gz -rw-r--r--. 1 root root 10061840 Dec 24 20:00 etc-2.tar.gz [root@lxy ~]# tar tf etc-2.tar.gz |grep services etc/firewalld/services/ #排除多個檔案 [root@lxy ~]# tar czf etc-3.tar.gz --exclude=/etc/{passwd,services,shadow} /etc tar: Removing leading `/' from member names [root@lxy ~]# ll total 29616 -rw-r--r--. 1 root root 10196844 Dec 24 19:59 etc-1.tar.gz -rw-r--r--. 1 root root 10061840 Dec 24 20:00 etc-2.tar.gz -rw-r--r--. 1 root root 10061136 Dec 24 20:02 etc-3.tar.gz [root@lxy ~]# tar tf etc-3.tar.gz |grep -E 'services|passwd|shadow' etc/security/opasswd etc/gshadow- etc/passwd- etc/gshadow etc/shadow- etc/pam.d/passwd etc/firewalld/services/ #排除兩個不同路徑的檔案 [root@lxy ~]# tar czf etc-4.tar.gz --exclude=/etc/services --exclude=/etc/firewalld/services /etc tar: Removing leading `/' from member names [root@lxy ~]# ll total 39444 -rw-r--r--. 1 root root 10196844 Dec 24 19:59 etc-1.tar.gz -rw-r--r--. 1 root root 10061840 Dec 24 20:00 etc-2.tar.gz -rw-r--r--. 1 root root 10061136 Dec 24 20:02 etc-3.tar.gz -rw-r--r--. 1 root root 10061821 Dec 24 20:04 etc-4.tar.gz [root@lxy ~]# tar tf etc-4.tar.gz |grep 'services' #根據排除列表進行排除檔案 [root@lxy ~]# cat paichu.list /etc/services /etc/passwd /etc/sysconfig/network-scripts /etc/hosts [root@lxy ~]# tar czf etc-5.tar.gz --exclude-from=paichu.list /etc tar: Removing leading `/' from member names [root@lxy ~]# tar tf etc-5.tar.gz |grep -E 'services|passwd|network-scripts|hosts' etc/security/opasswd etc/passwd- etc/hosts.allow etc/hosts.deny etc/pam.d/passwd etc/selinux/targeted/active/modules/100/denyhosts/ etc/selinux/targeted/active/modules/100/denyhosts/cil etc/selinux/targeted/active/modules/100/denyhosts/hll etc/selinux/targeted/active/modules/100/denyhosts/lang_ext etc/firewalld/services/ 第二種方法: 壓縮包名要跟f選項對應 X要跟排除列表檔案對應 [root@lxy ~]# tar czfX etc-6.tar.gz paichu.list /etc tar: Removing leading `/' from member names [root@lxy ~]# tar tf etc-6.tar.gz |grep -E 'services|passwd|network-scripts|hosts' etc/security/opasswd etc/passwd- etc/hosts.allow etc/hosts.deny etc/pam.d/passwd etc/selinux/targeted/active/modules/100/denyhosts/ etc/selinux/targeted/active/modules/100/denyhosts/cil etc/selinux/targeted/active/modules/100/denyhosts/hll etc/selinux/targeted/active/modules/100/denyhosts/lang_ext etc/firewalld/services/
時間的命令
#顯示當前時間命令 [root@lxy ~]# date Tue Dec 24 20:16:20 CST 2019 [root@lxy ~]# date +%F #顯示當前日期 2019-12-24 [root@lxy ~]# date +%T #顯示當前時間 20:17:52 [root@lxy ~]# date +%Y-%m-%d #顯示當前日期 2019-12-24 [root@lxy ~]# date +%y-%m-%d #顯示當前日期,沒有顯示世紀 19-12-24 [root@lxy ~]# date +%H:%M:%S #顯示時分秒 20:20:18 [root@lxy ~]# date +%s #時間戳,距離1970年1月1日0點0分0秒,過了多少秒 1577190037 [root@lxy ~]# date +%w #周幾 2 [root@lxy ~]# date +%W #今年的第幾周 51 [root@lxy ~]# date +%j #幾年的第幾天 358 -d #根據自己的要求顯示時間,而不是修改時間 [root@lxy ~]# date +%F 2019-12-24 [root@lxy ~]# date -d "+1 day" +%F 2019-12-25 [root@lxy ~]# date +%F 2019-12-24 [root@lxy ~]# date -d "-1 day" +%F 2019-12-23 [root@lxy ~]# date -d "-1 year" +%F 2018-12-24 [root@lxy ~]# date -d "-1 month" +%F 2019-11-24 -s #修改時間 [root@lxy ~]# date -s 20191001 Tue Oct 1 00:00:00 CST 2019 [root@lxy ~]# date +%F 2019-10-01 [root@lxy ~]# date -s 2019/12/1 Sun Dec 1 00:00:00 CST 2019 [root@lxy ~]# date +%F 2019-12-01 [root@lxy ~]# date -s 12:26:00 Sun Dec 1 12:26:00 CST 2019 [root@lxy ~]# date -s "20191224 12:27:00" Tue Dec 24 12:27:00 CST 2019 [root@lxy ~]# date +%F 2019-12-24 [root@lxy ~]# date Tue Dec 24 12:27:10 CST 2019 #怎麼同步系統的時間 [root@lxy ~]# yum install -y ntpdate [root@lxy ~]# ntpdate ntp1.aliyun.com 24 Dec 12:29:02 ntpdate[8593]: step time server 120.25.115.20 offset 9203309.341117 sec [root@lxy ~]# date Tue Dec 24 12:29:34 CST 2019