Linux 文件压缩

压缩工具
  compress/uncompress:对应 .Z 结尾的压缩格式文件
  压缩格式:gz、bz2、xz、zip、Z
  gzip??压缩文件并删除源文件(生成.gz的文件)
  gunzip?解压缩文件(gzip -d有相同的功能)
  bzip2   压缩文件(压缩比例比gzip更高后缀为.bz2)
  bunzip2 解压缩文件(bzip -d有相同的功能)

??压缩算法不同,压缩比也会不同
gzip
  gzip /PATH/TO/SOMEFILE?压缩完成后会删除原文件
  -d?解压缩
  -#?指定压缩比(1-9),默认是6
  -c?将压缩结果送往标准输出,可以使用重定向将其保存为压缩文件,从而保留原文件
  例子:
??gzip -c /PATH/TO/SOMEFILE > SOMEFILE.gz
gunzip
  gunzip /PATH/TO/SOMEFILE.gz??解压完成后会删除原文件
  zcat /PATH/TO/SOMEFILE.gz??????不解压的情况,查看文本文件的内容
  z系列命令,可以在不经解压的情况下,直接操作gzip压缩文件
  zcat  直接显示压缩文件的内容
  zless 直接逐行显示压缩文件的内容
  zdiff 直接报告压缩文件的差异内容
  zcmp?直接报告压缩文件的差异处
演示:
[[email protected] ~]# cp /var/log/messages /tmp/test/
[[email protected] ~]# ll /tmp/test/
总用量 288
-rw-r----- 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r--r----- 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r--r-- 1 root root 0 2月 20 13:41 f
-rw-r--r-- 1 root root 0 2月 20 13:41 g
-rw------- 1 root root 292504 2月 20 16:28 messages
[[email protected] ~]# ll -h /tmp/test/messages
-rw------- 1 root root 286K 2月 20 16:28 /tmp/test/messages

# 压缩,删除原文件,保留压缩后以.gz结尾的文件
[[email protected] ~]# gzip /tmp/test/messages

[[email protected] ~]# ll -h /tmp/test
总用量 44K
-rw-r----- 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r--r----- 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r--r-- 1 root root 0 2月 20 13:41 f
-rw-r--r-- 1 root root 0 2月 20 13:41 g
-rw------- 1 root root 41K 2月 20 16:28 messages.gz

# 解压缩,原来的压缩文件被删除,保留解压缩后的文件
[[email protected] ~]# gunzip /tmp/test/messages.gz
[[email protected] ~]# ll -h /tmp/test
总用量 288K
-rw-r----- 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r--r----- 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r--r-- 1 root root 0 2月 20 13:41 f
-rw-r--r-- 1 root root 0 2月 20 13:41 g
-rw------- 1 root root 286K 2月 20 16:28 messages

# zcat可以查看压缩的文件,不建议对大文件使用zcat命令查看
[[email protected] ~]# zcat /tmp/test/messages.gz

#=====================================================================================
# 解压缩
[[email protected] ~]# gzip -d /tmp/test/messages.gz
[[email protected] ~]# ll /tmp/test/
总用量 288
-rw-r----- 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r--r----- 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r--r-- 1 root root 0 2月 20 13:41 f
-rw-r--r-- 1 root root 0 2月 20 13:41 g
-rw------- 1 root root 292504 2月 20 16:28 messages

# 将压缩或解压缩的结果输出至标准输出(gzip -c FILE > /PATH/TP/SOMEFILE.gz)
[[email protected] ~]# gzip -c /tmp/test/messages > /tmp/test/messages.gz
[[email protected] ~]# ll /tmp/test/
总用量 332
-rw-r----- 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r--r----- 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r--r-- 1 root root 0 2月 20 13:41 f
-rw-r--r-- 1 root root 0 2月 20 13:41 g
-rw------- 1 root root 292504 2月 20 16:28 messages
-rw-r--r-- 1 root root 41791 2月 20 16:44 messages.gz

# 解压缩到标准输出
[[email protected] ~]# rm -f /tmp/test/messages
[[email protected] ~]# gzip -d -c /tmp/test/messages.gz > /tmp/test/messages
[[email protected] ~]# ll /tmp/test/
总用量 332
-rw-r----- 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r--r----- 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r--r-- 1 root root 0 2月 20 13:41 f
-rw-r--r-- 1 root root 0 2月 20 13:41 g
-rw-r--r-- 1 root root 292504 2月 20 16:50 messages
-rw-r--r-- 1 root root 41791 2月 20 16:44 messages.gz

bzip2
  比gzip有着更大压缩比的压缩工具,使用格式近似
  bzip2 /PATH/TO/SOMEFILE
  -d?解压缩
  -#?指定压缩比(1-9),默认是6
  -k?压缩解压时保留原文件
bunzip2
  bunzip2 /PATH/TO/SOMEFILE.bz2 解压完成后会删除原文件
  bzcat /PATH/TO/SOMEFILE.bz2 不解压的情况,查看文本文件的内容
演示:
# 压缩
[[email protected] ~]# bzip2 /tmp/test/messages

[[email protected] ~]# ll -h /tmp/test/
总用量 72K
-rw-r----- 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r--r----- 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r--r-- 1 root root 0 2月 20 13:41 f
-rw-r--r-- 1 root root 0 2月 20 13:41 g
-rw-r--r-- 1 root root 26K 2月 20 16:50 messages.bz2 #压缩后的结果
-rw-r--r-- 1 root root 41K 2月 20 16:44 messages.gz

# 解压缩
[[email protected] ~]# bunzip2 /tmp/test/messages.bz2
[[email protected] ~]# ll -h /tmp/test/
总用量 332K
-rw-r----- 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r--r----- 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r--r-- 1 root root 0 2月 20 13:41 f
-rw-r--r-- 1 root root 0 2月 20 13:41 g
-rw-r--r-- 1 root root 286K 2月 20 16:50 messages # 解压缩后的结果
-rw-r--r-- 1 root root 41K 2月 20 16:44 messages.gz

# -k 选项不用指明重定向的文件,自动保留源文件在当前文件中
[[email protected] ~]# bzip2 -k /tmp/test/messages
[[email protected] ~]# ll -h /tmp/test/
总用量 360K
-rw-r----- 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r--r----- 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r--r-- 1 root root 0 2月 20 13:41 f
-rw-r--r-- 1 root root 0 2月 20 13:41 g
-rw-r--r-- 1 root root 286K 2月 20 16:50 messages
-rw-r--r-- 1 root root 26K 2月 20 16:50 messages.bz2
-rw-r--r-- 1 root root 41K 2月 20 16:44 messages.gz

xz
  xz /PATH/TO/SOMEFILE
  -d?解压缩
  -#?指定压缩比(1-9),默认是6
  -k?压缩解压时保留原文件
unxz
  unxz /PATH/TO/SOMEFILE.xz 解压完成后会删除原文件
  xzdec /PATH/TO/SOMEFILE.xz 解压文件显示到终端上
  xzcat /PATH/TO/SOMEFILE.xz 不解压的情况,查看文本文件的内容

注意:以上压缩工具只能压缩文件,不能压缩目录,如果指定目录中的所有文件/PATH/TO/*会将目录中的每个文件压缩成一个压缩文件,所以在压缩目录的时候还需要归档工具
演示:
[[email protected] ~]# xz /tmp/test/messages
[[email protected] ~]# ll -h /tmp/test/
总用量 96K
-rw-r----- 1 root root 0 2月 20 13:41 a
-rw-rw-rw- 1 root root 0 2月 20 13:41 b.danger
-r--r----- 1 root root 0 2月 20 13:41 c
-rwxrwxr-x 1 root root 0 2月 20 13:41 d
-rwxrwxrwx 1 root root 0 2月 20 13:41 e.danger
-rw-r--r-- 1 root root 0 2月 20 13:41 f
-rw-r--r-- 1 root root 0 2月 20 13:41 g
-rw-r--r-- 1 root root 26K 2月 20 16:50 messages.bz2
-rw-r--r-- 1 root root 41K 2月 20 16:44 messages.gz
-rw-r--r-- 1 root root 21K 2月 20 16:50 messages.xz

zip  既归档又压缩的工具(window下面的.zip的文件可以直接在linux下解压)
  zip FILENAME.zip FILE1 FILE2 ... 压缩多个文件到一个目录中,压缩后不删除原文件
  unzip FILENAME.zip
  如果要压缩默认目录,要通过指定目录的所有文件/PATH/TO/*才能压缩整个目录下的文件,如果指定的是/PATH/TO/就只会压缩TO这个目录本身并不包括目录中的文件
  zip /PATH/TO/ /PATH/TO/SOMEFILE.zip?只是压缩了TO目录
  zip /PATH/TO/* /PATH/TO/SOMEFILE.zip 压缩了TO目录中的所有文件
演示:
# 对目录进行归档并压缩
[[email protected] test]# zip /tmp/test/tao.zip tao
adding: tao/ (stored 0%)
[[email protected] test]# ll
总用量 188
-rw-r--r-- 1 root root 12097 2月 20 17:42 boot.log
-rw-r--r-- 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r--r-- 1 root root 41791 2月 20 16:44 messages.gz
-rw-r--r-- 1 root root 21420 2月 20 16:50 messages.xz
-rw-r--r-- 1 root root 40960 2月 20 17:51 mylog.tar
-rw-r----- 1 root root 0 2月 20 17:42 pacemaker.log
drwxr-xr-x 2 root root 121 2月 20 17:43 tao
-rw-r--r-- 1 root root 7232 2月 20 18:15 tao.tar.gz
-rw-r--r-- 1 root root 158 2月 20 18:26 tao.zip
-rw-r--r-- 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r--r-- 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw------- 1 root root 105 2月 20 17:42 yum.log

[[email protected] test]# rm -fr tao

# 解压缩
[[email protected] test]# unzip tao.zip
Archive: tao.zip
creating: tao/
[[email protected] test]# ll
总用量 188
-rw-r--r-- 1 root root 12097 2月 20 17:42 boot.log
-rw-r--r-- 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r--r-- 1 root root 41791 2月 20 16:44 messages.gz
-rw-r--r-- 1 root root 21420 2月 20 16:50 messages.xz
-rw-r--r-- 1 root root 40960 2月 20 17:51 mylog.tar
-rw-r----- 1 root root 0 2月 20 17:42 pacemaker.log
drwxr-xr-x 2 root root 6 2月 20 17:43 tao
-rw-r--r-- 1 root root 7232 2月 20 18:15 tao.tar.gz
-rw-r--r-- 1 root root 158 2月 20 18:26 tao.zip
-rw-r--r-- 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r--r-- 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw------- 1 root root 105 2月 20 17:42 yum.log

tar?归档压缩工具(archive归档本身并不意味着压缩)?
  主要参数:
  -f 指定创建或展开归档文件名(只要操作归档文件就要用-f)
  -c 创建归档文件
  -v 显示创建的详细过程
  -x 展开归档文件
  -r 将文件添加到已经存在的归档文件中(压缩后是不能用r的,只有归档的时候用)
  -z 用gzip来压缩和解压缩文件
  -j 用bz2来压缩和解压缩文件
  -J 用xz来压缩和解压缩文件
  -t 不展开归档文件情况下查看文件中的内容
  -C 展开或解压文件到指定目录(如果没指定该参数,默认是当前目录)
  --xattrs?归档时,保留文件的扩展属性信息

  -zcf 归档并调用gzip压缩
  -zxf 调用gzip解压缩并展开归档,-z选项可省略(解压时自动判断用什么工具压缩)

  -jcf 归档并调用bzip2压缩
  -jxf 调用bzip2解压缩并展开归档,-j选项可省略

  -Jcf 归档并调用xz压缩
  -Jxf 调用xz解压缩并展开归档,-J选项可省略

??例如:
??tar -cvf home.tar /home 将home目录打包成home.tar(只是打包并没有压缩)
??tar -rvf home.tar /etc 将etc目录添加到已存在的打包文件home.tar里面
??tar -czvf home.tar.gz /home 将home目录打包并压缩成home.tar.gz
??tar -cvjf home.tar.bz2 /home 将home目录打包并压缩成.bz2的格式
??tar -xzvf home.tar.gz 将home.tar.gz这个备份文件还原并解压缩
??tar -tvf home.tar | more 查看home.tar备份文件的类容,并以分屏方式显示在显示器上
??tar -cvf /dev/st0 /home/shrek 可以将st0磁带机备份到/home目录下面

注意:f选项一定要写在最后一个;如果是解开压缩归档文件可以不指定压缩选项zjJ,tar会通过文件后缀判断是什么压缩工具压缩的
  归档演示:
[[email protected] ~]# ls /tmp/test/tao
boot.log fstab issue pacemaker.log wpa_supplicant.log Xorg.0.log yum.log

# 对所有以 .log 结尾的文件进行归档
[[email protected] ~]# tar -cf /tmp/test/mylog.tar /tmp/test/tao/*.log
[[email protected] ~]# ll /tmp/test/
总用量 136
-rw-r--r-- 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r--r-- 1 root root 41791 2月 20 16:44 messages.gz
-rw-r--r-- 1 root root 21420 2月 20 16:50 messages.xz
-rw-r--r-- 1 root root 40960 2月 20 17:45 mylog.tar # 归档后的文件
drwxr-xr-x 2 root root 121 2月 20 17:43 tao

# 展开归档
[[email protected] test]# tar xf mylog.tar
[[email protected] test]# ll
总用量 176
-rw-r--r-- 1 root root 12097 2月 20 17:42 boot.log
-rw-r--r-- 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r--r-- 1 root root 41791 2月 20 16:44 messages.gz
-rw-r--r-- 1 root root 21420 2月 20 16:50 messages.xz
-rw-r--r-- 1 root root 40960 2月 20 17:51 mylog.tar
-rw-r----- 1 root root 0 2月 20 17:42 pacemaker.log
drwxr-xr-x 2 root root 121 2月 20 17:43 tao
-rw-r--r-- 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r--r-- 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw------- 1 root root 105 2月 20 17:42 yum.log

# -C 展开归档至指定文件中
[[email protected] test]# mkdir /tmp/newtest
[[email protected] test]# tar xf mylog.tar -C /tmp/newtest
[[email protected] test]# ll /tmp/newtest
总用量 40
-rw-r--r-- 1 root root 12097 2月 20 17:42 boot.log
-rw-r----- 1 root root 0 2月 20 17:42 pacemaker.log
-rw-r--r-- 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r--r-- 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw------- 1 root root 105 2月 20 17:42 yum.log

# 查看归档文件中的文件列表
[[email protected] test]# tar tf mylog.tar
boot.log
pacemaker.log
wpa_supplicant.log
Xorg.0.log
yum.log

归档并压缩演示:
# 对目录进行归档并压缩
[[email protected] test]# tar zcf /tmp/test/tao.tar.gz tao
[[email protected] test]# ll /tmp/test
总用量 184
-rw-r--r-- 1 root root 12097 2月 20 17:42 boot.log
-rw-r--r-- 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r--r-- 1 root root 41791 2月 20 16:44 messages.gz
-rw-r--r-- 1 root root 21420 2月 20 16:50 messages.xz
-rw-r--r-- 1 root root 40960 2月 20 17:51 mylog.tar
-rw-r----- 1 root root 0 2月 20 17:42 pacemaker.log
drwxr-xr-x 2 root root 121 2月 20 17:43 tao # 原文件
-rw-r--r-- 1 root root 7232 2月 20 18:15 tao.tar.gz # 归档压缩后的文件
-rw-r--r-- 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r--r-- 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw------- 1 root root 105 2月 20 17:42 yum.log

# 删除原文件
[[email protected] test]# rm -fr tao

# 展开归档,其中 z 可省略,tar命令会自动识别其为压缩文件
[[email protected] test]# tar xf tao.tar.gz
[[email protected] test]# ll
总用量 184
-rw-r--r-- 1 root root 12097 2月 20 17:42 boot.log
-rw-r--r-- 1 root root 26074 2月 20 16:50 messages.bz2
-rw-r--r-- 1 root root 41791 2月 20 16:44 messages.gz
-rw-r--r-- 1 root root 21420 2月 20 16:50 messages.xz
-rw-r--r-- 1 root root 40960 2月 20 17:51 mylog.tar
-rw-r----- 1 root root 0 2月 20 17:42 pacemaker.log
drwxr-xr-x 2 root root 121 2月 20 17:43 tao # 展开后的文件
-rw-r--r-- 1 root root 7232 2月 20 18:15 tao.tar.gz
-rw-r--r-- 1 root root 2800 2月 20 17:42 wpa_supplicant.log
-rw-r--r-- 1 root root 18303 2月 20 17:42 Xorg.0.log
-rw------- 1 root root 105 2月 20 17:42 yum.log

cpio?归档工具(把文件复制为归档文件)
  cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。
  用法:
  cpio[选项] > 文件名或者设备名
  cpio[选项] < 文件名或者设备名
  选项:
  -o 将文件拷贝打包成文件或者将文件输出到设备上
  -i 解包,将打包文件解压或将设备上的备份还原到系统
  -t 预览,查看文件内容或者输出到设备上的文件内容
  -v 显示打包过程中的文件名称
  -d 解包生成目录,在cpio还原时,自动的建立目录
  -c 一种较新的存储方式
示例:
  将etc目录备份:
  find . /etc -print |cpio -ov > etc.cpio
  内容预览
  cpio -tv < etc.cpio
  要解包文件
  cpio -iv < etc.cpio
  cpio -idv < etc.cpio

压缩工具 ??compress/uncompress:对应 .Z 结尾的压缩格式文件??压缩格式:gz、bz2、xz、zip、Z????gzip???????压缩文件并删除源文件(生成.gz的文件)????gunzip????解压缩文件(gzip -d有相同的功能)????bzip2      压缩文件(压缩比例比gzip更高后缀为.bz2)????bunzip2  解压缩文件(bzip -d有相同的功能)
??压缩算法不同,压缩比也会不同??gzip??gzip /PATH/TO/SOMEFILE??压缩完成后会删除原文件????-d????解压缩??? -#????指定压缩比(1-9),默认是6????-c????将压缩结果送往标准输出,可以使用重定向将其保存为压缩文件,从而保留原文件??例子:??gzip -c /PATH/TO/SOMEFILE > SOMEFILE.gz??gunzip??gunzip /PATH/TO/SOMEFILE.gz??解压完成后会删除原文件??zcat /PATH/TO/SOMEFILE.gz??????不解压的情况,查看文本文件的内容??z系列命令,可以在不经解压的情况下,直接操作gzip压缩文件????zcat        直接显示压缩文件的内容????zless       直接逐行显示压缩文件的内容????zdiff       直接报告压缩文件的差异内容????zcmp????? 直接报告压缩文件的差异处演示:    [[email protected] ~]# cp /var/log/messages /tmp/test/    [[email protected] ~]# ll /tmp/test/    总用量 288    -rw-r----- 1 root root      0 2月  20 13:41 a    -rw-rw-rw- 1 root root      0 2月  20 13:41 b.danger    -r--r----- 1 root root      0 2月  20 13:41 c    -rwxrwxr-x 1 root root      0 2月  20 13:41 d    -rwxrwxrwx 1 root root      0 2月  20 13:41 e.danger    -rw-r--r-- 1 root root      0 2月  20 13:41 f    -rw-r--r-- 1 root root      0 2月  20 13:41 g    -rw------- 1 root root 292504 2月  20 16:28 messages    [[email protected] ~]# ll -h /tmp/test/messages    -rw------- 1 root root 286K 2月  20 16:28 /tmp/test/messages
    # 压缩,删除原文件,保留压缩后以.gz结尾的文件    [[email protected] ~]# gzip /tmp/test/messages
    [[email protected] ~]# ll -h /tmp/test    总用量 44K    -rw-r----- 1 root root   0 2月  20 13:41 a    -rw-rw-rw- 1 root root   0 2月  20 13:41 b.danger    -r--r----- 1 root root   0 2月  20 13:41 c    -rwxrwxr-x 1 root root   0 2月  20 13:41 d    -rwxrwxrwx 1 root root   0 2月  20 13:41 e.danger    -rw-r--r-- 1 root root   0 2月  20 13:41 f    -rw-r--r-- 1 root root   0 2月  20 13:41 g    -rw------- 1 root root 41K 2月  20 16:28 messages.gz
    # 解压缩,原来的压缩文件被删除,保留解压缩后的文件    [[email protected] ~]# gunzip /tmp/test/messages.gz    [[email protected] ~]# ll -h /tmp/test    总用量 288K    -rw-r----- 1 root root    0 2月  20 13:41 a    -rw-rw-rw- 1 root root    0 2月  20 13:41 b.danger    -r--r----- 1 root root    0 2月  20 13:41 c    -rwxrwxr-x 1 root root    0 2月  20 13:41 d    -rwxrwxrwx 1 root root    0 2月  20 13:41 e.danger    -rw-r--r-- 1 root root    0 2月  20 13:41 f    -rw-r--r-- 1 root root    0 2月  20 13:41 g    -rw------- 1 root root 286K 2月  20 16:28 messages
    # zcat可以查看压缩的文件,不建议对大文件使用zcat命令查看    [[email protected] ~]# zcat /tmp/test/messages.gz
    #=====================================================================================    # 解压缩    [[email protected] ~]# gzip -d /tmp/test/messages.gz    [[email protected] ~]# ll /tmp/test/    总用量 288    -rw-r----- 1 root root      0 2月  20 13:41 a    -rw-rw-rw- 1 root root      0 2月  20 13:41 b.danger    -r--r----- 1 root root      0 2月  20 13:41 c    -rwxrwxr-x 1 root root      0 2月  20 13:41 d    -rwxrwxrwx 1 root root      0 2月  20 13:41 e.danger    -rw-r--r-- 1 root root      0 2月  20 13:41 f    -rw-r--r-- 1 root root      0 2月  20 13:41 g    -rw------- 1 root root 292504 2月  20 16:28 messages
    # 将压缩或解压缩的结果输出至标准输出(gzip -c FILE > /PATH/TP/SOMEFILE.gz)    [[email protected] ~]# gzip -c /tmp/test/messages > /tmp/test/messages.gz    [[email protected] ~]# ll /tmp/test/    总用量 332    -rw-r----- 1 root root      0 2月  20 13:41 a    -rw-rw-rw- 1 root root      0 2月  20 13:41 b.danger    -r--r----- 1 root root      0 2月  20 13:41 c    -rwxrwxr-x 1 root root      0 2月  20 13:41 d    -rwxrwxrwx 1 root root      0 2月  20 13:41 e.danger    -rw-r--r-- 1 root root      0 2月  20 13:41 f    -rw-r--r-- 1 root root      0 2月  20 13:41 g    -rw------- 1 root root 292504 2月  20 16:28 messages    -rw-r--r-- 1 root root  41791 2月  20 16:44 messages.gz
    # 解压缩到标准输出    [[email protected] ~]# rm -f /tmp/test/messages    [[email protected] ~]# gzip -d -c /tmp/test/messages.gz > /tmp/test/messages    [[email protected] ~]# ll /tmp/test/    总用量 332    -rw-r----- 1 root root      0 2月  20 13:41 a    -rw-rw-rw- 1 root root      0 2月  20 13:41 b.danger    -r--r----- 1 root root      0 2月  20 13:41 c    -rwxrwxr-x 1 root root      0 2月  20 13:41 d    -rwxrwxrwx 1 root root      0 2月  20 13:41 e.danger    -rw-r--r-- 1 root root      0 2月  20 13:41 f    -rw-r--r-- 1 root root      0 2月  20 13:41 g    -rw-r--r-- 1 root root 292504 2月  20 16:50 messages    -rw-r--r-- 1 root root  41791 2月  20 16:44 messages.gz
??bzip2????比gzip有着更大压缩比的压缩工具,使用格式近似????bzip2 /PATH/TO/SOMEFILE??????-d????解压缩??????-#????指定压缩比(1-9),默认是6??????-k????压缩解压时保留原文件??bunzip2????bunzip2 /PATH/TO/SOMEFILE.bz2     解压完成后会删除原文件????bzcat /PATH/TO/SOMEFILE.bz2        不解压的情况,查看文本文件的内容演示:    # 压缩    [[email protected] ~]# bzip2 /tmp/test/messages
    [[email protected] ~]# ll -h /tmp/test/    总用量 72K    -rw-r----- 1 root root   0 2月  20 13:41 a    -rw-rw-rw- 1 root root   0 2月  20 13:41 b.danger    -r--r----- 1 root root   0 2月  20 13:41 c    -rwxrwxr-x 1 root root   0 2月  20 13:41 d    -rwxrwxrwx 1 root root   0 2月  20 13:41 e.danger    -rw-r--r-- 1 root root   0 2月  20 13:41 f    -rw-r--r-- 1 root root   0 2月  20 13:41 g    -rw-r--r-- 1 root root 26K 2月  20 16:50 messages.bz2 #压缩后的结果    -rw-r--r-- 1 root root 41K 2月  20 16:44 messages.gz
    # 解压缩    [[email protected] ~]# bunzip2 /tmp/test/messages.bz2    [[email protected] ~]# ll -h /tmp/test/    总用量 332K    -rw-r----- 1 root root    0 2月  20 13:41 a    -rw-rw-rw- 1 root root    0 2月  20 13:41 b.danger    -r--r----- 1 root root    0 2月  20 13:41 c    -rwxrwxr-x 1 root root    0 2月  20 13:41 d    -rwxrwxrwx 1 root root    0 2月  20 13:41 e.danger    -rw-r--r-- 1 root root    0 2月  20 13:41 f    -rw-r--r-- 1 root root    0 2月  20 13:41 g    -rw-r--r-- 1 root root 286K 2月  20 16:50 messages  # 解压缩后的结果    -rw-r--r-- 1 root root  41K 2月  20 16:44 messages.gz
    # -k 选项不用指明重定向的文件,自动保留源文件在当前文件中    [[email protected] ~]# bzip2 -k /tmp/test/messages    [[email protected] ~]# ll -h /tmp/test/    总用量 360K    -rw-r----- 1 root root    0 2月  20 13:41 a    -rw-rw-rw- 1 root root    0 2月  20 13:41 b.danger    -r--r----- 1 root root    0 2月  20 13:41 c    -rwxrwxr-x 1 root root    0 2月  20 13:41 d    -rwxrwxrwx 1 root root    0 2月  20 13:41 e.danger    -rw-r--r-- 1 root root    0 2月  20 13:41 f    -rw-r--r-- 1 root root    0 2月  20 13:41 g    -rw-r--r-- 1 root root 286K 2月  20 16:50 messages    -rw-r--r-- 1 root root  26K 2月  20 16:50 messages.bz2    -rw-r--r-- 1 root root  41K 2月  20 16:44 messages.gz
??xz????xz /PATH/TO/SOMEFILE??????-d????解压缩??????-#????指定压缩比(1-9),默认是6??????-k????压缩解压时保留原文件??unxz????unxz /PATH/TO/SOMEFILE.xz        解压完成后会删除原文件????xzdec /PATH/TO/SOMEFILE.xz       解压文件显示到终端上????xzcat /PATH/TO/SOMEFILE.xz        不解压的情况,查看文本文件的内容以上压缩工具只能压缩文件,不能压缩目录,如果指定目录中的所有文件/PATH/TO/*会将目录中的每个文件压缩成一个压缩文件,所以在压缩目录的时候还需要归档工具演示:    [[email protected] ~]# xz /tmp/test/messages    [[email protected] ~]# ll -h /tmp/test/    总用量 96K    -rw-r----- 1 root root   0 2月  20 13:41 a    -rw-rw-rw- 1 root root   0 2月  20 13:41 b.danger    -r--r----- 1 root root   0 2月  20 13:41 c    -rwxrwxr-x 1 root root   0 2月  20 13:41 d    -rwxrwxrwx 1 root root   0 2月  20 13:41 e.danger    -rw-r--r-- 1 root root   0 2月  20 13:41 f    -rw-r--r-- 1 root root   0 2月  20 13:41 g    -rw-r--r-- 1 root root 26K 2月  20 16:50 messages.bz2    -rw-r--r-- 1 root root 41K 2月  20 16:44 messages.gz    -rw-r--r-- 1 root root 21K 2月  20 16:50 messages.xz
??zip??既归档又压缩的工具(window下面的.zip的文件可以直接在linux下解压)  ????zip FILENAME.zip FILE1 FILE2 ...        压缩多个文件到一个目录中,压缩后不删除原文件????unzip FILENAME.zip????如果要压缩默认目录,要通过指定目录的所有文件/PATH/TO/*才能压缩整个目录下的文件,如果指定的是/PATH/TO/就只会压缩TO这个目录本身并不包括目录中的文件????zip /PATH/TO/????/PATH/TO/SOMEFILE.zip??只是压缩了TO目录????zip /PATH/TO/*??/PATH/TO/SOMEFILE.zip??压缩了TO目录中的所有文件演示:    # 对目录进行归档并压缩    [[email protected] test]# zip /tmp/test/tao.zip tao      adding: tao/ (stored 0%)    [[email protected] test]# ll    总用量 188    -rw-r--r-- 1 root root 12097 2月  20 17:42 boot.log    -rw-r--r-- 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r--r-- 1 root root 41791 2月  20 16:44 messages.gz    -rw-r--r-- 1 root root 21420 2月  20 16:50 messages.xz    -rw-r--r-- 1 root root 40960 2月  20 17:51 mylog.tar    -rw-r----- 1 root root     0 2月  20 17:42 pacemaker.log    drwxr-xr-x 2 root root   121 2月  20 17:43 tao    -rw-r--r-- 1 root root  7232 2月  20 18:15 tao.tar.gz    -rw-r--r-- 1 root root   158 2月  20 18:26 tao.zip    -rw-r--r-- 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r--r-- 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw------- 1 root root   105 2月  20 17:42 yum.log
    [[email protected] test]# rm -fr tao
    # 解压缩    [[email protected] test]# unzip tao.zip    Archive:  tao.zip       creating: tao/    [[email protected] test]# ll    总用量 188    -rw-r--r-- 1 root root 12097 2月  20 17:42 boot.log    -rw-r--r-- 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r--r-- 1 root root 41791 2月  20 16:44 messages.gz    -rw-r--r-- 1 root root 21420 2月  20 16:50 messages.xz    -rw-r--r-- 1 root root 40960 2月  20 17:51 mylog.tar    -rw-r----- 1 root root     0 2月  20 17:42 pacemaker.log    drwxr-xr-x 2 root root     6 2月  20 17:43 tao    -rw-r--r-- 1 root root  7232 2月  20 18:15 tao.tar.gz    -rw-r--r-- 1 root root   158 2月  20 18:26 tao.zip    -rw-r--r-- 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r--r-- 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw------- 1 root root   105 2月  20 17:42 yum.log

??tar??归档压缩工具(?archive归档本身并不意味着压缩)???主要参数:????-f        指定创建或展开归档文件名(只要操作归档文件就要用-f)????-c        创建归档文件????-v        显示创建的详细过程????-x        展开归档文件????-r        将文件添加到已经存在的归档文件中(压缩后是不能用r的,只有归档的时候用)????-z        用gzip来压缩和解压缩文件??? -j         用bz2来压缩和解压缩文件????-J???????? 用xz来压缩和解压缩文件????-t         不展开归档文件情况下查看文件中的内容????-C        展开或解压文件到指定目录(如果没指定该参数,默认是当前目录)    --xattrs??归档时,保留文件的扩展属性信息
????-zcf        归档并调用gzip压缩????-zxf        调用gzip解压缩并展开归档,-z选项可省略(解压时自动判断用什么工具压缩)
????-jcf        归档并调用bzip2压缩????-jxf        调用bzip2解压缩并展开归档,-j选项可省略
????-Jcf        归档并调用xz压缩????-Jxf        调用xz解压缩并展开归档,-J选项可省略
??例如:??tar -cvf home.tar /home            将home目录打包成home.tar(只是打包并没有压缩)??tar -rvf home.tar /etc                将etc目录添加到已存在的打包文件home.tar里面??tar -czvf home.tar.gz /home      将home目录打包并压缩成home.tar.gz??tar -cvjf home.tar.bz2 /home     将home目录打包并压缩成.bz2的格式??tar -xzvf home.tar.gz                 将home.tar.gz这个备份文件还原并解压缩??tar -tvf home.tar | more            查看home.tar备份文件的类容,并以分屏方式显示在显示器上??tar -cvf /dev/st0 /home/shrek  可以将st0磁带机备份到/home目录下面
注意:f选项一定要写在最后一个;如果是解开压缩归档文件可以不指定压缩选项zjJ,tar会通过文件后缀判断是什么压缩工具压缩的归档演示:    [[email protected] ~]# ls /tmp/test/tao    boot.log  fstab  issue  pacemaker.log  wpa_supplicant.log  Xorg.0.log  yum.log
    # 对所有以 .log 结尾的文件进行归档    [[email protected] ~]# tar -cf /tmp/test/mylog.tar /tmp/test/tao/*.log    [[email protected] ~]# ll /tmp/test/    总用量 136    -rw-r--r-- 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r--r-- 1 root root 41791 2月  20 16:44 messages.gz    -rw-r--r-- 1 root root 21420 2月  20 16:50 messages.xz    -rw-r--r-- 1 root root 40960 2月  20 17:45 mylog.tar   # 归档后的文件    drwxr-xr-x 2 root root   121 2月  20 17:43 tao   
    # 展开归档    [[email protected] test]# tar xf mylog.tar    [[email protected] test]# ll    总用量 176    -rw-r--r-- 1 root root 12097 2月  20 17:42 boot.log    -rw-r--r-- 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r--r-- 1 root root 41791 2月  20 16:44 messages.gz    -rw-r--r-- 1 root root 21420 2月  20 16:50 messages.xz    -rw-r--r-- 1 root root 40960 2月  20 17:51 mylog.tar    -rw-r----- 1 root root     0 2月  20 17:42 pacemaker.log    drwxr-xr-x 2 root root   121 2月  20 17:43 tao    -rw-r--r-- 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r--r-- 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw------- 1 root root   105 2月  20 17:42 yum.log
    # -C 展开归档至指定文件中    [[email protected] test]# mkdir /tmp/newtest    [[email protected] test]# tar xf mylog.tar -C /tmp/newtest    [[email protected] test]# ll /tmp/newtest    总用量 40    -rw-r--r-- 1 root root 12097 2月  20 17:42 boot.log    -rw-r----- 1 root root     0 2月  20 17:42 pacemaker.log    -rw-r--r-- 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r--r-- 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw------- 1 root root   105 2月  20 17:42 yum.log
    # 查看归档文件中的文件列表    [[email protected] test]# tar tf mylog.tar    boot.log    pacemaker.log    wpa_supplicant.log    Xorg.0.log    yum.log
归档并压缩演示:    # 对目录进行归档并压缩    [[email protected] test]# tar zcf /tmp/test/tao.tar.gz tao    [[email protected] test]# ll /tmp/test    总用量 184    -rw-r--r-- 1 root root 12097 2月  20 17:42 boot.log    -rw-r--r-- 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r--r-- 1 root root 41791 2月  20 16:44 messages.gz    -rw-r--r-- 1 root root 21420 2月  20 16:50 messages.xz    -rw-r--r-- 1 root root 40960 2月  20 17:51 mylog.tar    -rw-r----- 1 root root     0 2月  20 17:42 pacemaker.log    drwxr-xr-x 2 root root   121 2月  20 17:43 tao           # 原文件    -rw-r--r-- 1 root root  7232 2月  20 18:15 tao.tar.gz    # 归档压缩后的文件    -rw-r--r-- 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r--r-- 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw------- 1 root root   105 2月  20 17:42 yum.log
    # 删除原文件    [[email protected] test]# rm -fr tao        
    # 展开归档,其中 z 可省略,tar命令会自动识别其为压缩文件    [[email protected] test]# tar xf tao.tar.gz    [[email protected] test]# ll    总用量 184    -rw-r--r-- 1 root root 12097 2月  20 17:42 boot.log    -rw-r--r-- 1 root root 26074 2月  20 16:50 messages.bz2    -rw-r--r-- 1 root root 41791 2月  20 16:44 messages.gz    -rw-r--r-- 1 root root 21420 2月  20 16:50 messages.xz    -rw-r--r-- 1 root root 40960 2月  20 17:51 mylog.tar    -rw-r----- 1 root root     0 2月  20 17:42 pacemaker.log    drwxr-xr-x 2 root root   121 2月  20 17:43 tao           # 展开后的文件    -rw-r--r-- 1 root root  7232 2月  20 18:15 tao.tar.gz    -rw-r--r-- 1 root root  2800 2月  20 17:42 wpa_supplicant.log    -rw-r--r-- 1 root root 18303 2月  20 17:42 Xorg.0.log    -rw------- 1 root root   105 2月  20 17:42 yum.log
cpio??归档工具(把文件复制为归档文件)cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件。    用法:        cpio[选项] > 文件名或者设备名        cpio[选项] < 文件名或者设备名    选项:        -o:将文件拷贝打包成文件或者将文件输出到设备上        -i:解包,将打包文件解压或将设备上的备份还原到系统        -t:预览,查看文件内容或者输出到设备上的文件内容        -v:显示打包过程中的文件名称        -d:解包生成目录,在cpio还原时,自动的建立目录        -c:一种较新的存储方式    示例:        将etc目录备份:            find . /etc -print |cpio -ov > etc.cpio        内容预览            cpio -tv < etc.cpio        要解包文件            cpio -iv < etc.cpio            cpio -idv < etc.cpio

原文地址:https://www.cnblogs.com/Link-Luck/p/9855821.html

时间: 2024-10-14 12:08:58

Linux 文件压缩的相关文章

Linux文件压缩与解压缩

什么是压缩文件?原理是什么? 简单的说,就是经过压缩软件压缩文件叫压缩文件,压缩的原理是把文件的二进制代码压缩,把相邻的0,1代码减少, 例如有000000,可以把它变成6个0的写法60来减少该文件的空间,同理解压缩就是按照相同的原则把数据还原回来. Linux环境中有哪些格式的压缩文件? 常见的压缩文件有*.tar,*.tar.gz,*.tgz,*.gz,*.Z,*.bz2,为啥有这么多种压缩文件?这是因为Linux支持的压缩命令非常多, 且不同的命令所用的压缩技术并不相同,当然彼此之前可能就

Linux文件压缩和解压缩命令

Linux文件压缩和解压缩命令: tar 命令(打包并压缩的话,原文件也会默认存在) -c 建立打包档案 -x 解包 -t 查看包里的类容 -r 向包里追加文件 -v 显示打包过程 -f 文件 比如:命令    参数 包名   要打包的文件路径 tar     cvf  zzj.tar  /ect/zzj/  /ect/ko tar     xvf  zzj.tar(解开文件包) tar     xvfz  zzj.tar.gz(解压成原来压缩的文件) tar     cvfz  zzj.tar

linux文件压缩

一.压缩文件的原理 压缩技术,简而言之,我们可以将其想象成:其实文件里面有很多的"空间"存在,并不是完全填满的,而"压缩"技术就是将这些"空间"填满,从而使得整个文件占用量下降. 目前我们的操作系统数据中,都是使用字节(byte)单位来计量,不过事实上,计算机中最小的计量单位应该是位(bit),我们知道 1 byte = 8 bit.那么我们是怎么样对一些数据进行记录的呢? 例如我们只是需要记忆一个数字,即1这个数字,考虑到计算机所谓的二进制,如

Linux文件压缩和打包(gzip、bip2、xz工具)

常见压缩格式 Windows:.rar..zip..7z Linux  :.zip..gz..bz2..xz..tar..gz..tar.bz2..tar.xz gzip压缩工具 用来压缩文件(常用) gzip 1.txt                                  压缩 1.txt gzip -d 1.txt.gz               解压 1.txt.gz gzip -c 1.txt > /tmp/1.txt.gz     压缩文件且不删除原有文件 gzip -

Linux文件压缩和打包(上)

6.1压缩打包介绍 6.2gzip压缩工具 6.3bzip2压缩工具 6.4xz压缩工具 文件压缩后的大小不能更具压缩工具来定论,他的大小是根据文件的内容和压缩工具一起定论的. 6.1压缩打包介绍 我们平时在网上下载文件一般都是压缩的,压缩会使我们的文件空间缩小.压缩文件我们在网上传输的时间也会有所减少,带宽资源也会减少.说到带宽其实我们家庭使用的带宽和公司使用的不是一样的,家庭使用的下载速度和上传速度不对等,而公司的是对等的.所以公司的宽带比较贵.如果我们服务器上的文件经常被下载我们就要对文件

【Linux学习笔记】第6章 Linux文件压缩和打包

6.1压缩打包介绍Windows压缩:.rar,.zip,.7zLinux压缩:.zip,.gz,.bz2,.xz,.tar.gz,.tar.bz2,.tar.xz 6.2gzip压缩工具gzip FILENAME 压缩文件,格式gz,压缩后源文件消失.gzip -d FILENAME.gz 解压文件.gzip -[1-9] FILENAME.gz 压缩文件时指定压缩级别,1最轻,9最狠.gunzip FILENAME.gz 也可以解压.file FILENAME 可以查看文件的信息.zcat

Linux文件压缩和解压使用记录

一:tar(可压缩可解压) tar命令是Unix/Linux系统中备份文件的可靠方法,几乎可以工作于任何环境中,它的使用权限是所有用户.但是tar本身只是一个文件打包工具,只有和其他工具组合时才具有压缩/解压文件功能. 使用tar命令压缩文件的格式是:tar  参数[主选项+辅选项]   '文件或目录 ' 参数主选项 -c 创建新的档案文件.如果用户想备份一个目录或是一些文件,就要选择这个选项. -r 把要存档的文件追加到档案文件的未尾.例如用户已经做好备份文件,又发现还有一个目录或是一些文件忘

本地上传文件至服务器的技巧(linux文件压缩及解压文件)

linux(ubuntu)文件解压及压缩文件 ubuntu支持文件的解压及压缩功能, 如果ubuntu上面没有安装过unzip工具的话,可以通过下面命令安装: sudo apt-get install unzip zip压缩文件夹,文件及解压文件的命令 1.压缩文件夹 zip -r 目标文件名.zip 要压缩的文件夹 2.把文件 unzip 文件 目的地 把/home目录下面的mydata.zip解压到mydatabak目录里面 3.把文件解压到当前目录 unzip 要解压的文件 其他的详细请查

Linux文件压缩和打包

常见压缩文件 . windows  .rar .zip .7z . Linux .zip, .gz, .bz2, .xz, .tar.gz, .tar.bz2, .tar.xz gzip压缩工具(不能压缩目录) gzip filename  #压缩后原文件会消失,生成filename.gz gzip -d filename.gz 或 unzip filename.gz   #压缩过的文件会消失,生成filename gzip -# filename  //#:1-9,默认6 gzip -c fi