ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux-定时任务-打包与压缩

2019-08-21 19:51:30  阅读:216  来源: 互联网

标签:md cm tar color Linux 定时 0px root 打包


<style></style>

第12章 Linux系统管理-打包与压缩

第12章 Linux系统管理-打包与压缩1. 压缩包概述2. Zip打包压缩3. Gzip打包压缩4. Tar打包压缩5. Linux打包与压缩习题6. 显示时间命令7. 如何让系统自动同步时间

1. 压缩包概述

1. 什么是压缩包

     
xxxxxxxxxx
       
就是将多个文件和目录合并为一个特殊的文件
   

2. 为什么使用压缩包

     
xxxxxxxxxx
       
1.减少占用的体积
2.加快网络的传输






 
 


3. Windows的压缩和Linux的有什么不同

     
xxxxxxxxxx
       
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压缩

2. Zip打包压缩

     
xxxxxxxxxx
       
使用zip命令可以对文件进行压缩打包,解压则需要使用unzip命令
         
xxxxxxxxxx
       
#默认情况下,没有zip和unzip工具,需要进行安装
[root@qls ~]# yum install zip unzip -y

#压缩文件为zip包(并不会删除源文件)
   
[root@qls ~]# zip   filename.zip    filename

#压缩目录为zip包(压缩时需要添加-r参数,递归的方式)

[root@qls ~]# zip  -r  dir.zip    dir/


#解压zip文件包(不要覆盖掉原来的文件,尽可能找一个空的目录解压,然后再mv移动过去)
[root@qls ~]# unzip filename.zip
#测试linux的zip是否能与windows的zip互通    ---->可以
#zip命令常用选项
-q #不显示指令执行过程;
-r #递归处理,将指定目录下的所有文件和子目录一并处理;
-T#检查压缩包是否完整;
#unzip命令的选项
-l#显示压缩文件内所包含的文件;
-t#检查压缩文件是否正确
-q#执行时不显示任何信息;
-d      #指定文件解压缩后所要存储的目录;
   

3. Gzip打包压缩

     
xxxxxxxxxx
       
gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。
         
xxxxxxxxxx
       
#如果系统中没有该命令,请进行下载安装
[root@qls ~]# yum install gzip -y
#对文件进行压缩
[root@qls ~]# gzip file
#查看gz压缩后的文件
[root@qls ~]# zcat file.gz
#解压gzip的压缩包
[root@qls ~]# gzip -d file.gz
#对目录进行压缩
[root@qls ~]# gzip -r dir/
#解压目录
[root@qls ~]# gzip -rd dir/
#选项
-d#解开压缩文件;
-r#递归处理,将指定目录下的所有文件及子目录一并处理;
   

4. Tar打包压缩

     
xxxxxxxxxx
       
tar是linux下最常用的压缩与解压缩,支持文件和目录的压缩归档
         
xxxxxxxxxx
       
#语法
tar [OPTION...] [FILE]...
#选项
z #使用gzip压缩归档后的文件(.tar.gz)
j#使用bzip2压缩归档后的文件(.tar.bz2)
J#使用xz压缩归档后的文件(.tar.xz)
c #表示创建压缩包
v #表示显示创建压缩包和解压的过程
f #表示指定压缩包(f一定要放在这几个参数的最后)
t #查看压缩包内容
x #解压
C#指定解压目录位置
X#排除多个文件(写入需要排除的文件名称)
P#使用绝对路径打包
h#打包软连接
--exclude#排除不需要打包的文件
#常用打包与压缩组合
czf#打包tar.gz格式
cjf#打包tar.bz2格式
cJf#打包tar.xz格式
xf#自动选择解压模式
tf#查看压缩包内容
         
xxxxxxxxxx
       
#如何打包,将所有的文件,和目录打成一个包,tar命令进行归档,gzip进行压缩,tar.gz
[root@qls /]# tar czf tt.tar.gz var/ dir1/ test.log
#扩展了解项:
#打包为bz2格式的压缩包
[root@qls /]# tar cjf tt.tar.bz2 var/ dir1/ test.log   
 
#打包为xz格式的压缩包
[root@qls ~]# tar cJf tt.tar.xz var/ dir1/ test.log   
#查看压缩包的内容
[root@qls ~]# tar tf tt.tar.gz 

#解压软件包,解压tar.gz tar.bz2 tar.xz
[root@qls ~]# tar xf tt.tar.gz
#解压默认是解压到当前目录下
[root@qls ~]# tar xf tt.tar.gz -C /tmp/
#打包时的路径选择: 相对路径  绝对路径
[root@qls ~]# tar czf sys.tar.gz /etc/ /var/
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
#问题: 为什么有一个删根的操作:
防止在解压的过程中,直接覆盖原有的目录以及文件

#推荐的打包方式:
#将etc目录 var目录 统一打包存放到/root/目录下的 etc.tar.gz压缩包中
[root@qls ~]#  cd /
[root@qls /]# tar czf root/etc.tar.gz   etc/ var/
#如何打包时排除文件: (备份不需要使用排除,)
#1.排除单个文件
[root@qls /]# tar czf etc.tar.gz --exclude=etc/services etc/
#2.排除多个文件
[root@qls /]# tar czf etc.tar.gz --exclude=etc/services --exclude=etc/rc.local etc/
[root@qls /]# tar czf etc.tar.gz --exclude=etc/{passwd,shadow,gshadow} etc/ 
#3.将需要排除的文件写入文件中
[root@qls /]# cat paichu.list#必须写相对路径
etc/services
etc/rc.local
etc/rc.d/rc.local
#通过-X指定需要排除的文件列表, 最后进行打包压缩
[root@qls /]# tar czfX etc.tar.gz paichu.list etc/
#如何打包时保留软连接文件
#打包链接文件,打包链接文件的真实文件
[root@qls ~]# cd /
[root@qls /]# tar czfh local.tar.gz  etc/rc.local
   

Find与Tar打包的结合方式

     
xxxxxxxxxx
       
#打包/tmp下所有文件
[root@qls ~]# cd /
[root@qls /]# find tmp/ -type f | xargs tar czf tmp.tar.gz
#打包/tmp下所有文件
[root@qls /]# tar czf tmp.tar.gz $(find /tmp/ -type f)
#统计文件的大小
[root@qls /]# du -sh tmp.tar.gz

#经统计结果对比: 压缩前的文件或目录假设占用了6MB,压缩后可能就占用1MB.
   

Find与Du打包的结合方式

     
xxxxxxxxxx
       
#扩展: 统计/下面的目录的大小,只统计1级
[root@qls ~]# find / -maxdepth 1 -type d |sed -r 's#(.*)# du -sh \1 #g'|bash
[root@qls ~]# ls -d /* |xargs du -sh
[root@qls ~]# du -sh /*
   

5. Linux打包与压缩习题

     
x
       
1.列出linux常用打包工具并写相应的压缩、解压缩参数
gzip: 只能压缩单个文件
1.gzip  filename   #打包|压缩
2.gzip -d filename.gz #解压
3.zcat  filename.gz#查看压缩包中的内容
zip: 支持压缩多个目录和文件--->希望能与windows进行互通
1.zip  -r   filename.zip    filename
  命令  递归 选项             参数
  搬家  多个 箱子             物品
2. unzip  filename.zip     #解包
  
tar: 能够支持单个文件和多个文件,并也能与windows进行互通. 因为很多开源的项目提供的压缩包就是tar.gz
tar czf  filname.tar.gz   filename directory#打包
tar xf   filname.tar.gz#解压
tar xf   filname.tar.gz -C /tmp#解压到指定解压的目标位置
tar tf   filename.tar.gz#查看压缩包内容
-----------------------------------
tar cjf  filename.tar.bz2#打包格式为bz2
tar cJf  filename.tar.xz#打包格式为xz
2.如何用gzip命令对文件进行压缩、解压缩,给出实践步骤。
1.gzip  filename   #打包|压缩
2.gzip -d filename.gz #解压
3.如何用zip命令对文件以及目录进行压缩、解压缩,给出实践步骤。
1.zip  -r   filename.zip    filename
  命令  递归 选项             参数
  搬家  多个 箱子             物品
2. unzip  filename.zip     #解包
4.创建一个自己名字的文件至/opt目录,给出实践步骤。
[root@qls ~]# touch /opt/ttt


5.打包opt/整个目录,并命名为opt_2019_08_19.tar.gz,给出实践步骤。
#写死
[root@qls ~]# tar czf opt_2019-08-19.tar.gz /opt/
[root@qls ~]# date +%F
2019-08-19
[root@qls ~]# tar czf opt_$(date +%F).tar.gz /opt/
[root@qls ~]# ls
opt_2019-08-19.tar.gz 
[root@qls ~]# date -s "2019/08/16"
[root@qls ~]# tar czf opt_$(date +%F).tar.gz /opt/
opt_2019-08-16.tar.gz
6.查看打包好的opt_2019_08_19.tar.gz里的文件,给出实践步骤。
[root@qls ~]# tar tf opt_2019-08-19.tar.gz 
7.将打包好的opt_2019_08_19.tar.gz内容指定解压至/tmp目录,并给出实践步骤。
[root@qls ~]# tar xf opt_2019-08-19.tar.gz  -C /tmp/
8.打包以当前主机名+ip的命名方式的压缩包: 比如: www.oldboyedu.com_2019-08-19_10.0.0.99.tar.gz ,压缩/opt目录即可
1.提取主机名 hostname
2.提取IP地址 ifconfig ens32|awk '/inet / {print $2}'
3.提取当前时间date +%F

[root@qls ~]# tar czf $(hostname)_$(ifconfig eth0|awk '/inet / {print $2}')_$(date +%F).tar.gz   /opt 
   

6. 显示时间命令

     
xxxxxxxxxx
       
很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。
date命令是显示或设置系统时间与日期。
         
xxxxxxxxxx
       
#选项
-d #根据你的描述显示日期
-s   #修改日期
%H #小时,24小时制(00~23)
%M #分钟(00~59)
%s #从1970年1月1日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 #年的最后两个数字(1999则是99)
%Y #年,实际
%F #显示日期(%Y-%m-%d)
         
xxxxxxxxxx
       
#date命令示例:
[root@qls ~]# date
Sat May 18 21:33:24 CST 2019
[root@qls ~]# date +%F
2019-05-18
[root@qls ~]# date +%T
21:33:33
[root@qls ~]# date +%y-%m-%d
19-05-18
[root@qls ~]# date +%w
6
[root@qls ~]# date +%s
1558186507
[root@qls ~]# date +%d
18
[root@qls ~]# date +%W
19
[root@qls ~]# date +%j
138
[root@qls ~]# date -d "-1 day" +%F
2019-05-17
[root@qls ~]# date -d "+1 day" +%F
2019-05-19
[root@qls ~]# date -d "1 d" +%F
2019-05-18
[root@qls ~]# date -d "+1 year" +%F
2020-05-18
[root@qls ~]# date -d "11 year" +%F
2030-05-18
[root@qls ~]# date -d "+1 year" +%F
2020-05-18
[root@qls ~]# date -d "1 year" +%F
2020-05-18
[root@qls ~]# date -s 20201231
Thu Dec 31 00:00:00 CST 2020
[root@qls ~]# date +%F
2020-12-31
[root@qls ~]# date -s 11
Sat May 18 11:00:00 CST 2019
[root@qls ~]# date +%T
11:00:15
[root@qls ~]# date -s 11:30:30
Sat May 18 11:30:30 CST 2019
[root@qls ~]# date +%T
11:30:31
[root@qls ~]# date -s "20201231 12:00:00"
Thu Dec 31 12:00:00 CST 2020
[root@qls ~]# date +%F
2020-12-31
[root@qls ~]# date +%T
12:00:12
   

7. 如何让系统自动同步时间

     
xxxxxxxxxx
       
ntpdate命令是用来设置本地日期和时间。
PS1:必须有 root 权限才能在主机上运行这个命令。
PS2:如果NTP服务器守护程序在主机上运行,命令将拒绝ntpdate设置日期。
         
x
   
#系统中默认没有该命令,需要自行下载安装
[root@qls ~]# yum install ntpdate -y 
#常用可进行同步时间的NTP服务器
ntp.aliyun.com
ntp1.aliyun.com......ntp7.aliyun.com
#同步时间
[root@qls ~]# ntpdate ntp.aliyun.com
18 May 21:49:06 ntpdate[36642]: adjust time server 203.107.6.88 offset -0.003359 sec
[root@qls ~]# date +%F_%T
2019-08-19_21:49:27
   
#让系统自动同步时间,只需添加一条定时任务即可。
   

 

标签:md,cm,tar,color,Linux,定时,0px,root,打包
来源: https://www.cnblogs.com/guanchao/p/11390826.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有