六、文件管理之:打包压缩
1.什么是打包压缩:
打包指的是将多个文件和目录合并为一个特殊文件,然后将该特殊文件进行压缩,最终得到一个压缩包.
2.为什么使用压缩包:
1.减少占用的体积
2.加快网络的传输
3.Windows的压缩和Linux的有什么不同windows: zip rar(linux不支持)
linux: zip tar.gz tar.bz2 .gz
如果希望windows的软件能被linux解压,或者linux的软件包被windows能识别,选择zip.
PS:压缩包的后缀不重要,但一定要携带.
4.Linux下常见的压缩包类型
格式 压缩工具
.zip zip压缩工具
.gz gzip压缩工具,只能压缩文件,会删除源文件(通常配合tar使用)
.bz2 bzip2压缩工具,只能压缩文件,会删除源文件(通常配合tar使用)
.tar.gz 先使用tar命令归档打包,然后使用gzip压缩
.tar.bz2 先使用tar命令归档打包,然后使用bzip压缩
5、打包压缩方法
方法一:
#1、打包
[root@localhost test]# tar cvf etc_bak.tar /etc/ # c创建 v详细 f打包后文件路径 ps:
打包的目标路径如果是绝对路径,会提示:tar:从成员名中删除开头的,不影响打包
添加-P选项便不再提示:tar cvPf ...
可以cd到/etc下然后tar cvf etc_bak.tar *打包,这样去掉了一层文件夹
#2、压缩
[root@localhost test]# gzip etc_bak.tar # 文件体积变小,并且加上后缀.gz
ps:
gzip -> gunzip
bzip2-> bunzip2
#3、上述两步可以合二为一
[root@localhost test]# tar czvf etc1_bak.tar.gz /etc/ # 选项 z 代表 gzip 压缩算法
[root@localhost test]# tar cjvf etc1_bak.tar.bz2 /etc/ # 选项 j 代表 bzip2 压缩算法
方法二:
[rootmlocalhost ~]# zip /test/bak.zip a.txt b.txt c.txt # zip后的第一个参数是压缩包路径, 其余为被压缩的文件
adding: a.txt (stored 0%)
adding: b.txt (stored 0%)
adding: c.txt (stored 0%)
[rootmlocalhost ~]# ls /test/
bak.zip
6、解压缩
#1、针对 xxx.tar.gz 或者 xxx.tar.bz2,统一使用
[root@localhost test]# tar xvf压缩包 -C 解压到的目录 #无需指定解压算法,tar会自动判断
#2、针对 xxx.zip
[root@localhost test]# unzip xxx.zip
7、拓展
打包压缩通常用于备份文件,文件的名字必须见名知意且应该带上时间、主机名之类
时间命令date
选项
-d #根据你的描述显示日期
-s #修改日期
%H #小时,24小时制(00~23)
%M #分钟(00~59)
%s #从1970年1月1日00:00:00:00到目前经历的秒数
%S #显示秒数(00~59)
%T #显示时间,24小时制(hh:mm:ss)
%d #一个月的第几天(01~31)
%j #一年的第几天(001~366)
%m #月份(01~12)
%w #一个星期的第几天(0代表星期天)
%W #一年的第几个星期(00~53,星期一为第一天)
%y #年的最后两位数字(2020则为20)
%Y #年,实际
%F #显示日期(%Y-%m-%d)
示例
命令# date
2020年 08月 12 日 星期三 20:55:48 CST
命令# date +%F
2020-08-l2
命令# date +%y-%m-%d
2020-08-l2
命令# date +%y-%m-%d
20-08-l2
命令# date +%T
00:0l:03
命令# date +%H:%M:%S
00:0l:ll
命令# date +%w
3
命令# date +%s
l597236988
命令# date +%d
l2
命令# date +%w
32
命令# date +%j
225
命令# date -d "-l day " +%F
2020-08-ll
命令# date -d "l day " +%F
2020-08-l3
命令# date -d "+l day " +%F
2020-08-l3
命令# date -d "3 years " +%F
2023-08-l2
命令# date -d "+3 years " +%F
2023-08-l2
命令# date -d "+3 hours " +%F %H:%M:%S
2020-08-l2_23:58:06
命令# date -s 2020llll
2020年 ll月 ll日 星期三 00:00:00 CST
命令# date -s ll:ll:ll
202 0年 ll月 ll日 星期三 ll:ll:ll CST
命令# date -s " 2020llll ll:ll:ll "
2020年 ll月 ll日 星期三 ll:ll:ll CST
命令# date +%F
2020-ll-ll
命令# date +%T
ll:ll:29
ٚ再看备份
命令# tar czvf `date +%F`_bak.tar.gz /etc
命令# tar czvf `date +%F_%H_%M_%S`_bak.tar.gz /etc # 如果带有时分秒,不要用冒号分隔,因为文件名的命名里不能带有冒号