1.为什么要打压缩包?
备份的时候,能节约空间
网络传送的时候,能节约时间2.打包压缩:
打包: 就是将很多文件放到一起,成一个文件
压缩: 减少占用磁盘空间的操作3.windows里的.rar压缩文件传递到linux里,是否能打开?
zip windows和linux都支持
.rar文件在linux里默认是不能打开
linux里的所有的压缩文件,windows里的都能打开
windows里的压缩文件,在linux里不一定就可以打开4.linux和windows之间的文件上传和下载的解决方法:
1.xftp: 在windows里安装
2.moba 在windows里安装
3.lrzsz 在windows里安装了xshell但是没有安装xftp,需要 在linux里安装lrzsz,速度没有使用xftp快
yum install lrzszrz linux里接受从windows里上传的文件 receive
sz playbook.sh 将linux里的playbook.sh文件传到windows里 sent
zip只能给文件做成一个压缩包,不能对文件夹进行
[root@master 410]# yum install zip unzip -y
[root@master 410]# zip passwd.zip passwd
#打包压缩文件 原文件
adding: passwd (deflated 62%)
[root@master 410]# ls
passwd passwd.zip
[root@master 410]# cp passwd.zip /backup
[root@master 410]# cd /backup/
Archive 附件: 一个压缩包或者压缩文件就称呼为一个附件
存档文件,归档文件
其实就是将一个文件压缩或者很多文件放到一个文件里,把很多东西放到一起–》这个过程就称呼归档,存档
deflated 泄气(压缩)
inflat 解压
[root@master backup]# gzip passwd #直接在原文件上进行压缩,添加后缀名.gz
[root@master backup]# zcat passwd.gz #查看压缩文件里的内容
[root@master backup]# gunzip passwd.gz #解压文件
xz 也是linux系统默认安装的压缩工具
[root@master backup]# xz passwd
[root@master backup]# xzcat passwd.xz
[root@master backup]# unxz passwd.xz
例:https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.17.2.tar.xz
xz和gzip的区别
xz的压缩效果比gzip好,压缩后占用的空间比较少,压缩需要的时间长
gzip 压缩速度快,但是效果一般文件比较小,使用xz或者gzip都可以
如果文件比较大,建议使用xz压缩,可以节约更加多的磁盘空间,但是需要时间比较长 慢工出细活–》xz
[root@master ~]# ll -h bigfile.txt
-rw-r--r--. 1 root root 76M 3月 28 16:32 bigfile.txt
[root@master ~]# time xz bigfile.txt #查看gzip命令的执行消耗时间
real 0m4.384s
user 0m3.545s
sys 0m0.801s
[root@master ~]# ll -h bigfile.*
-rw-r--r--. 1 root root 132 3月 28 16:31 bigfile.sh
-rw-r--r-- 1 root root 12K 3月 28 16:32 bigfile.txt.xz
[root@master ~]# unxz bigfile.txt.xz
[root@master ~]# ls
anaconda-ks.cfg bigfile.txt
[root@master ~]# ll -h bigfile.*
-rw-r--r--. 1 root root 132 3月 28 16:31 bigfile.sh
-rw-r--r-- 1 root root 76M 3月 28 16:32 bigfile.txt
[root@master ~]# time gzip bigfile.txt #查看gzip命令的执行消耗时间
real 0m0.987s
user 0m0.913s
sys 0m0.073s
[root@master ~]# ll -h bigfile.*
-rw-r--r--. 1 root root 132 3月 28 16:31 bigfile.sh
-rw-r--r-- 1 root root 262K 3月 28 16:32 bigfile.txt.gz
[root@master ~]# gunzip bigfile.txt.gz
[root@master lianxi]# yum install bzip2 -y
[root@master lianxi]# bzip2 feng.yaml
[root@master lianxi]# ls feng.yaml.bz2
feng.yaml.bz2
[root@master lianxi]# bzcat feng.yaml.bz2
[root@master lianxi]# bunzip2 feng.yaml.bz2
使用tar命令打的压缩包叫tarball --》tar包–>归档文件:将很多个文件或者文件夹打包到一个文件里,然后可以对归档文件进行压缩
.tar —》其实只是归档,不进行压缩
.tar.gz --》先归档,然后再调用gzip进行压缩–》.tar.gz --》速度快
.tar.xz --》先归档,然后再调用xz进行压缩–》.tar.xz -->压缩效果好
.tar.bz2 --》先归档,然后再调用bzip2进行压缩–》.tar.bz2
用途:制作归档文件、释放归档文件
格式:压缩:tar [选项]… 归档文件名 源文件或目录
解压:tar [选项]… 归档文件名 [-C 目标目录]
常用命令选项
-c:创建 .tar 格式的包文件 create
-x:解开.tar格式的包文件
-v:输出详细信息
-f:表示使用归档文件 file
-t:列表查看包内的文件 list
-p:保持原文件的原来属性
-P:保持原文件的绝对路径
-z 调用gzip去压缩
-J 调用xz去压缩
-j 调用bzip2去压缩
常用选项:
tar -czf -->.tar.gz
tar czf(加不加 - 效果一样)
tar cjf -->.tar.bz2
tar cJf -->.tar.xz
[root@master luoyawei]# cp /etc/passwd .
[root@master luoyawei]# cp /boot . -r
[root@master luoyawei]# ls
boot passwd
[root@master luoyawei]# tar czf passwd.tar.gz passwd
# passwd.tar.gz为压缩文件,passwd为源文件
#将当前目录下的passwd文件打包成passwd.tar.gz压缩包
#后面打包的文件会覆盖原来的文件,如果文件名一样
[root@master luoyawei]# ls
boot passwd passwd.tar.gz
[root@master luoyawei]# tar czf passwd.tar.gz passwd
[root@master luoyawei]# ls
boot passwd passwd.tar.gz
# 用gzip打包成.xz后缀的文件,发现文件还是gzip压缩文件
[root@master luoyawei]# tar czf passwd.tar.xz passwd
[root@master luoyawei]# ls
boot passwd passwd.tar.gz passwd.tar.xz
[root@master luoyawei]# file passwd.tar.gz
passwd.tar.gz: gzip compressed data, from Unix, last modified: Tue Apr 12 19:55:59 2022
[root@master luoyawei]# file passwd.tar.xz
passwd.tar.xz: gzip compressed data, from Unix, last modified: Tue Apr 12 19:57:08 2022
[root@master luoyawei]# tar cjf passwd.tar.bz2 passwd
[root@master luoyawei]# tar cJf passwd.tar.xz passwd
[root@master luoyawei]# ls
boot passwd passwd.tar.bz2 passwd.tar.gz passwd.tar.xz
[root@master luoyawei]# file passwd.tar.xz
passwd.tar.xz: XZ compressed data
#总结: 后面打包的文件会覆盖原来的文件,如果文件名一样
#出现提示信息,是因为我们使用的是绝对路径
[root@master luoyawei]# tar czf /lianxi/luoyawei/hosts.tar.gz /etc/hosts
tar: 从成员名中删除开头的“/”
[root@master luoyawei]# ls
boot hosts.tar.gz passwd passwd.tar.bz2 passwd.tar.gz passwd.tar.xz
–exclude 排除
将/boot目录下的除grub2目录以外的所有文件都备份到/bak目录下叫no-grub.tar.gz
[root@fengdeyong bak]# tar --exclude=/boot/grub2 -czf /bak/no-grub.tar.gz /boot
# 排除多个文件或者文件夹
[root@fengdeyong bak]# tar --exclude=/boot/grub2 --exclude=/boot/loader -czf /bak/no-grub.tar.gz /boot
[root@master luoyawei]# tar --exclude=/boot/{grub2,grub,efi} -czf /lianxi/luoyawei/no_grub2_boot.tar.gz /boot
打包文件时嵌入日期
打包压缩某个文件–》本质上就是备份,一般备份都会添加备份时候的时间
date 是linux里查看时间的命令
格式化输出日期
+%Y year 年
%m month 月
%d day 日
%H hour 小时
%M minute 分钟
%S seconde 秒
[root@hunan-wangzhe-5 lianxi]# date +%Y%m%d
20211027
[root@hunan-wangzhe-5 lianxi]# date +%Y-%m-%d
2021-10-27
[root@hunan-wangzhe-5 lianxi]# date +%Y_%m_%d
2021_10_27
[root@hunan-wangzhe-5 lianxi]# date +%Y%m%d%H%M%S
20211027162146
[root@hunan-wangzhe-5 lianxi]# w_time=$(date +%Y%m%d%H%M%S)
#将date +%Y%m%d%H%M%S命令的执行结果赋值给w_time这个变量
#变量名=$( 命令) 优先执行$()里的命令,然后将命令的执行结果赋值给变量名
$( 命令) ---》命令替换
[root@hunan-wangzhe-5 lianxi]# echo $w_time
20211027162311
#引用w_time变量的值 $变量名 --》引用变量名的值
#获得日期给变量,然后调用变量
[root@master luoyawei]# ctime=$(date +%Y%m%d)
[root@master luoyawei]# echo $ctime
20220412
[root@master luoyawei]# tar czf boot-$ctime.tar.gz /boot
[root@master luoyawei]# tar czf boot-$(date +%Y%m%d).tar.gz /boot
在工作中经常需要备份的东西: 日志文件会记录程序发生的事情
web服务器的日志记录哪些人从哪些地方访问了哪些网址–》大数据分析的
日志非常消耗磁盘空间
服务器上只是保存最近30天
nginx的日志,mysql的日志文件等
思考:京东,淘宝
1亿用户–》app和网站–》10个网址–》一条日志: 9910000000010
美团: 一天有多少外卖订单
-f:表示使用归档文件 file
-t:列表查看包内的文件 list
[root@master luoyawei]# tar tf hosts.tar.gz
etc/hosts
[root@wh 415]# tar czf boot.tar.gz /boot
tar: 从成员名中删除开头的“/”
[root@wh 415]# ls
boot.tar.gz
[root@wh 415]# tar xf boot.tar.gz
[root@wh 415]# ls
boot boot.tar.gz
[root@wh 415]# tar tf boot.tar.gz
boot/
boot/efi/
boot/efi/EFI/
boot/efi/EFI/centos/
boot/grub2/
boot/grub2/device.map
boot/grub2/i386-pc/
boot/grub2/i386-pc/gcry_rmd160.mod
boot/grub2/i386-pc/acpi.mod
boot/grub2/i386-pc/gcry_rsa.mod
boot/grub2/i386-pc/adler32.mod
boot/grub2/i386-pc/gcry_seed.mod
boot/grub2/i386-pc/affs.mod
boot/grub2/i386-pc/gcry_serpent.mod
boot/grub2/i386-pc/afs.mod
boot/grub2/i386-pc/gcry_sha1.mod
boot/grub2/i386-pc/ahci.mod
......
xf
Extract all files from archive.tar.
Extract 提取,解压 ===》x
1. 默认压缩路径为当前,如果压缩的时候用的是绝对路径,那么解压的时候,会去除/,产生后面对应的目录,如果压缩的时候是相对路径,那么默认解压到当前
#绝对路径
[root@master luoyawei]# tar czf hosts.tar.gz /etc/host
tar: 从成员名中删除开头的“/”
[root@master luoyawei]# tar xf hosts.tar.gz
[root@master luoyawei]# ls
boot etc hosts.tar.gz passwd passwd.tar.bz2 passwd.tar.gz passwd.tar.xz
[root@master luoyawei]# ls etc
hosts
[root@wh 415]# ls
[root@wh 415]# tar czf passwd.tar.gz /etc/passwd
tar: 从成员名中删除开头的“/”
[root@wh 415]# ls
passwd.tar.gz
[root@wh 415]# tar xf passwd.tar.gz #会在当前目录下产生etc目录,把解压后的passwd放在etc目录下
[root@wh 415]# ls
etc passwd.tar.gz
[root@wh 415]# tar tf passwd.tar.gz
etc/passwd
#相对路径
[root@wh 415]# cp /etc/hosts .
[root@wh 415]# ls
hosts
[root@wh 415]# tar czf hosts.tar.gz hosts
[root@wh 415]# ls
hosts hosts.tar.gz
[root@wh 415]# rm -rf hosts
[root@wh 415]# ls
hosts.tar.gz
[root@wh 415]# tar xf hosts.tar.gz
[root@wh 415]# ls
hosts hosts.tar.gz
产生提示信息是因为使用的是绝对路径保存压缩包
[root@master luoyawei]# mkdir /weihong
[root@master luoyawei]# pwd
/lianxi/luoyawei
[root@master luoyawei]# tar czf /weihong/passwd.tar.gz /etc/passwd
tar: 从成员名中删除开头的“/”
[root@master luoyawei]# ls /weihong
passwd.tar.gz
2. -C 指定解压文件存放的路径
[root@master luoyawei]# ls /nongda_weihong/
[root@master luoyawei]# tar xf /weihong/passwd.tar.gz -C /nongda_weihong/
[root@master luoyawei]# ls /nongda_weihong/
etc
文件和文件夹可以一起打包到一个压缩文件里
[root@master luoyawei]# tar czf /lianxi/luoyawei/boot_passwd.tar.gz /boot /etc/passwd
tar: 从成员名中删除开头的“/”
[root@master luoyawei]# tar czf /lianxi/luoyawei/boot_passwd_log.tar.gz /boot /etc/passwd /var/log
tar: 从成员名中删除开头的“/”
#/boot,/var/log是文件夹 /etc/passwd是文件