第十天 1-9 rhel7-文件的归档和压缩

 

大纲:
文件的归档和压缩
1、tar命令的使用及参数解析
tar、gz、bz/bz2文件的创建、查看及解压
zip/unzip命令的使用

一、文件的归档和压缩

在我们的计算机中,经常会遇到有好多文件名相似或作用相似的文件,所有文件都摆放到一起
看着很乱,而且不易于查找和管理,这是,我们会对功能或名字相似的文件分别放在不同的文件夹中,便于管理和浏览,把这些文件都放在文件夹中的操作就叫做归档!!!!

归档的好处:
1.方便使用、查询、阅读
2.易于管理 (批量删除文件)

为什么要压缩?

如图:主机A要跟主机B传输一个大小为10G的文件估计传送100s.
如果直接传输会大量的占用流量带宽.导致公司的内网访问速度缓慢.
传输前压缩--传输后解压

我把10G的文件压缩成5G,传送时间是50s.

文件压缩的好处:
1.节约硬盘的资源.
2.加快文件传输的速率.

1.1 文件的归档
在Linux中我们通常使用tar命令,将文件归档
归档文件的类型有:tar、gz、bz/bz2、Z、zip等

tar、gz、bz2/bz文件的创建、查看及解压---tar命令的使用
我们可以使用命令man tar 或 tar --help命令查看帮助信息,
查看命令如何使用:

[root@xiaogan ~]# tar --help
Usage: tar [OPTION...] [FILE]...
GNU `tar' saves many files together into a single tape or disk archive, and can
restore individual files from the archive.

Examples:
  tar -cf archive.tar foo bar  # 创建tar包,将foo和bar归档到archive.tar中
  tar -tvf archive.tar        # 查看archive.tar文件中归档的文件有哪些
  tar -xf archive.tar          # 将archive.tar文件解包

 

-A # 向压缩包文件中添加tar包文件 append tar files to an archive
-c # 创建
-r # 将要归档的文件添加到本文件的末尾 append files to the end of an archive
-t # 列出压缩包中文件目录
-u # 对tar包中文件进行升级(只对tar包中有改动的文件进行添加)
only append files newer than copy in archive
-d # 比较tar包与文件系统中的不通,删除tar包中的不通内容
-x # 解包 extract files from an archive

-f # 指定创建or解包归档文件的名字
-v # 显示详细信息、or显示进度
-k # 解包时,跳过已经存在的文件,不覆盖
-m # 解包时,设定文件的修改时间为现在

-z # gz文件创建及解压参数 filter the archive through gzip
-j # bz/bz2文件创建及解压参数 filter the archive through bzip2
-J # xz文件创建及解压参数 filter the archive through xz
-C # --directory=DIR指定解压文件路径 change to directory DIR
zip文件的创建、查看及解压---zip、unzip命令的使用

zip --help

[root@xiaogan ~]# zip --help
Copyright (c) 1990-2008 Info-ZIP - Type 'zip "-L"' for software license.
Zip 3.0 (July 5th 2008). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
  The default action is to add or replace zipfile entries from list, which
  can include the special name - to compress standard input.
  If zipfile and list are omitted, zip compresses stdin to stdout.
  -f  freshen: only changed files  -u  update: only changed or new files
  -d  delete entries in zipfile    -m  move into zipfile (delete OS files)
  -r  recurse into directories    -j  junk (don't record) directory names
  -0  store only                  -l  convert LF to CR LF (-ll CR LF to LF)
  -1  compress faster              -9  compress better
  -q  quiet operation              -v  verbose operation/print version info
  -c  add one-line comments        -z  add zipfile comment
  -@  read names from stdin        -o  make zipfile as old as latest entry
  -x  exclude the following names  -i  include only the following names
  -F  fix zipfile (-FF try harder) -D  do not add directory entries
  -A  adjust self-extracting exe  -J  junk zipfile prefix (unzipsfx)
  -T  test zipfile integrity      -X  eXclude eXtra file attributes
  -y  store symbolic links as the link instead of the referenced file
  -e  encrypt                      -n  don't compress these suffixes
  -h2  show more help

 


格式:zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
unzip --help

[root@xiaogan ~]# unzip --help
UnZip 6.00 of 20 April 2009, by Info-ZIP.  Maintained by C. Spieler.  Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.

Usage: unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
  Default action is to extract files in list, except those in xlist, to exdir;
  file[.zip] may be a wildcard.  -Z => ZipInfo mode ("unzip -Z" for usage).

  -p  extract files to pipe, no messages    -l  list files (short format)
  -f  freshen existing files, create none    -t  test compressed archive data
  -u  update files, create if necessary      -z  display archive comment only
  -v  list verbosely/show version info      -T  timestamp archive to latest
  -x  exclude files that follow (in xlist)  -d  extract files into exdir
modifiers:
  -n  never overwrite existing files        -q  quiet mode (-qq => quieter)
  -o  overwrite files WITHOUT prompting      -a  auto-convert any text files
  -j  junk paths (do not make directories)  -aa treat ALL files as text
  -U  use escapes for all non-ASCII Unicode  -UU ignore any Unicode fields
  -C  match filenames case-insensitively    -L  make (some) names lowercase
  -X  restore UID/GID info                  -V  retain VMS version numbers
  -K  keep setuid/setgid/tacky permissions  -M  pipe through "more" pager
See "unzip -hh" or unzip.txt for more help.  Examples:
  unzip data1 -x joe  => extract all files except joe from zipfile data1.zip
  unzip -p foo | more  => send contents of foo.zip via pipe into program more
  unzip -fo foo ReadMe => quietly replace existing ReadMe if archive file newer

 

 

实验:

1、归档文件创建、查看及解包

[root@xiaogan ~]# tar -cf grub2.tar /boot/grub2/
tar: Removing leading `/' from member names #详见注释
[root@xiaogan ~]# tar -tf grub2.tar
boot/grub2/
boot/grub2/themes/
boot/grub2/themes/system/
......
boot/grub2/fonts/unicode.pf2
boot/grub2/grubenv
boot/grub2/grub.cfg
[root@xiaogan ~]# ls
anaconda-ks.cfg  Documents  grub2.tar            Music    Public  Templates
Desktop          Downloads  initial-setup-ks.cfg  Pictures  soft    Videos
[root@xiaogan ~]# tar -xf grub2.tar
[root@xiaogan ~]# ls
anaconda-ks.cfg  Desktop    Downloads  initial-setup-ks.cfg  Pictures  soft      Videos
boot            Documents  grub2.tar  Music                Public    Templates
[root@xiaogan ~]# ls boot
grub2
[root@xiaogan ~]# 

 

2、gz压缩文件的创建、查看及解包

[root@xiaogan ~]# tar -zcf grub2.tar.gz /boot/grub2/
tar: Removing leading `/' from member names #详见注释
[root@xiaogan ~]# ls
anaconda-ks.cfg  Desktop    Downloads  grub2.tar.gz          Music    Public  Templates
boot            Documents  grub2.tar  initial-setup-ks.cfg  Pictures  soft    Videos
[root@xiaogan ~]# tar -tvf grub2.tar.gz #查看命令效果,与实验一对比有木有发现,加V和不加V的区别?!
drwx------ root/root        0 2016-07-27 21:54 boot/grub2/
drwxr-xr-x root/root        0 2016-07-27 21:45 boot/grub2/themes/
drwxr-xr-x root/root        0 2015-10-13 00:57 boot/grub2/themes/system/
......
-rw-r--r-- root/root  2560080 2016-07-27 21:53 boot/grub2/fonts/unicode.pf2
-rw-r--r-- root/root      1024 2016-07-27 21:54 boot/grub2/grubenv
-rw-r--r-- root/root      4257 2016-07-27 21:54 boot/grub2/grub.cfg
[root@xiaogan ~]# rm -rf boot
[root@xiaogan ~]# ls
anaconda-ks.cfg  Documents  grub2.tar    initial-setup-ks.cfg  Pictures  soft      Videos
Desktop          Downloads  grub2.tar.gz  Music                Public    Templates
[root@xiaogan ~]# tar -zxf grub2.tar.gz
[root@xiaogan ~]# ls
anaconda-ks.cfg  Desktop    Downloads  grub2.tar.gz          Music    Public  Templates
boot            Documents  grub2.tar  initial-setup-ks.cfg  Pictures  soft    Videos
[root@xiaogan ~]# ls boot/grub2/
device.map  fonts  grub.cfg  grubenv  i386-pc  locale  themes
[root@xiaogan ~]#

 

3、bz/bz2压缩文件的创建、查看及解包

[root@xiaogan ~]# tar -jcf grub2.tar.bz2 /boot/grub2/
tar: Removing leading `/' from member names #详见注释
[root@xiaogan ~]# ls
anaconda-ks.cfg  Desktop    Downloads  grub2.tar.bz2  initial-setup-ks.cfg  Pictures  soft      Videos
boot            Documents  grub2.tar  grub2.tar.gz  Music                Public    Templates
[root@xiaogan ~]# tar -tf grub2.tar.bz2 
boot/grub2/
boot/grub2/themes/
boot/grub2/themes/system/
......
boot/grub2/fonts/unicode.pf2
boot/grub2/grubenv
boot/grub2/grub.cfg
[root@xiaogan ~]# ls
anaconda-ks.cfg  Desktop    Downloads  grub2.tar.bz2  initial-setup-ks.cfg  Pictures  soft      Videos
boot            Documents  grub2.tar  grub2.tar.gz  Music                Public    Templates
[root@xiaogan ~]# rm -rf boot
[root@xiaogan ~]# ls
anaconda-ks.cfg  Documents  grub2.tar      grub2.tar.gz          Music    Public  Templates
Desktop          Downloads  grub2.tar.bz2  initial-setup-ks.cfg  Pictures  soft    Videos
[root@xiaogan ~]# tar -jxf grub2.tar.bz2 
[root@xiaogan ~]# ls
anaconda-ks.cfg  Desktop    Downloads  grub2.tar.bz2  initial-setup-ks.cfg  Pictures  soft      Videos
boot            Documents  grub2.tar  grub2.tar.gz  Music                Public    Templates
[root@xiaogan ~]# ls boot/grub2/
device.map  fonts  grub.cfg  grubenv  i386-pc  locale  themes
[root@xiaogan ~]#

注释:tar: Removing leading `/' from member names

不是错误,是tar删除了绝对路径最开始 / 而进行的提示。

压缩包里面的文件是绝对路径很容易害死人。

我就因为解压一个 cpio 包,里面文件竟然是绝对路径文件而不得不重装系统。

4、zip/unzip命令的使用
创建:(压缩目录或文件)

[root@xiaogan ~]# zip -r boot.zip boot
  adding: boot/ (stored 0%)
  adding: boot/grub2/ (stored 0%)
  adding: boot/grub2/themes/ (stored 0%)
  adding: boot/grub2/themes/system/ (stored 0%)
  adding: boot/grub2/device.map (deflated 25%)
......
  adding: boot/grub2/fonts/unicode.pf2 (deflated 56%)
  adding: boot/grub2/grubenv (deflated 89%)
  adding: boot/grub2/grub.cfg (deflated 68%)
[root@xiaogan ~]# zip passwd.zip /etc/passwd
  adding: etc/passwd (deflated 61%)

解压:

[root@xiaogan ~]# mkdir test
[root@xiaogan ~]# unzip -d ./test boot.zip
Archive:  boot.zip
  creating: ./test/boot/
  creating: ./test/boot/grub2/
  creating: ./test/boot/grub2/themes/
  creating: ./test/boot/grub2/themes/system/
  inflating: ./test/boot/grub2/device.map  
  creating: ./test/boot/grub2/i386-pc/
  inflating: ./test/boot/grub2/i386-pc/acpi.mod 
......
  inflating: ./test/boot/grub2/locale/en@piglatin.mo  
  creating: ./test/boot/grub2/fonts/
  inflating: ./test/boot/grub2/fonts/unicode.pf2  
  inflating: ./test/boot/grub2/grubenv  
  inflating: ./test/boot/grub2/grub.cfg  
[root@xiaogan ~]# unzip passwd.zip -d ./test/
Archive:  passwd.zip
  inflating: ./test/etc/passwd      
[root@xiaogan ~]#

4、比较四种创建方式的不同

[root@xiaogan ~]# ls -lh *.tar* *.zip
-rw-r--r-- 1 root root 3.2M 8月  10 23:03 boot.zip
-rw-r--r-- 1 root root 7.7M 8月  10 21:42 grub2.tar
-rw-r--r-- 1 root root 2.5M 8月  10 22:06 grub2.tar.bz2
-rw-r--r-- 1 root root 3.1M 8月  10 22:05 grub2.tar.gz
-rw-r--r-- 1 root root 1.1K 8月  10 23:03 passwd.zip

有木有注意到?!三种创建归档文件的方式的不同?!

tar不压缩
gz文件压缩,但是压缩效率没有tar.bz2效果好!!!


1.2 file命令

在Linux系统中,对文件拓展名的应用不如windows运用的那么好,我们通常可以使用
ls -l命令,查看文件的类型,也可以通过file命令来查看文件的类型。

1.2.1 用法及参数解析
用法: file [选项...] [文件...]
-b #在列出辨识结果时,不显示文件名
-c #详细显示命令执行过程,便于排错或分析程序执行的情形
-C # 检查指定的文件(缺省为/etc/magic文件)有无格式错误。此验证一般不进行
-m #
-d #将任何缺省系统测试应用到文件
-z #探测压缩过的文件类型

[root@xiaogan ~]# file -z grub2.tar.gz 
grub2.tar.gz: POSIX tar archive (GNU) (gzip compressed data, from Unix, last modified: Wed Aug 10 22:05:35 2016)

-L #直接显示符号连接所指向文件的类别

[root@xiaogan ~]# ls /etc/sysconfig/selinux 
/etc/sysconfig/selinux
[root@xiaogan ~]# file -L /etc/sysconfig/selinux 
/etc/sysconfig/selinux: ASCII text
[root@xiaogan ~]# file /etc/sysconfig/selinux 
/etc/sysconfig/selinux: symbolic link to `../selinux/config'

-f <文件名称> #从指定的文件中读取要分析的文件名列表

-F <分隔符号> #设定名称文件中文件之间的分隔号,缺省为一行一个文件

[root@xiaogan ~]# touch a.txt
[root@xiaogan ~]# echo grub2.tar > a.txt
[root@xiaogan ~]# echo grub2.tar.gz >> a.txt
[root@xiaogan ~]# echo grub2.tar.bz2 >> a.txt
[root@xiaogan ~]# file -f a.txt 
grub2.tar:    POSIX tar archive (GNU)
grub2.tar.gz:  gzip compressed data, from Unix, last modified: Wed Aug 10 22:05:35 2016
grub2.tar.bz2: bzip2 compressed data, block size = 900k

-I #如果文件不是普通文件,则不尝试对文件类型进行分来

-v #在标准输出设备中显示版本信息并退出


1.2.2 file命令返回结果以及含义:
empty 空文件
English text 英文正式文件
directory 目录文件
assembler program text 汇编语言程序的文本文件
ascii text ASCII编码的文本文件
command text 命令语言编写的命令正文程序
c program c语言正文程序
relocation text 用于连接的目标文件
executable 可执行的目标代码文件

 

posted @ 2016-08-10 23:17  小甘丶  阅读(703)  评论(0编辑  收藏  举报