Linux 文件目录压缩与解压命令

2022-12-28 18:09:07 浏览数 (1)

Linux 文件目录压缩与解压命令,融合多部Linux经典著作,去除多余部分,保留实用部分。

compress压缩: compress是个历史悠久的压缩程序,文件经它压缩后,其名称后面会多出 ".Z" 的扩展名。

代码语言:javascript复制
[root@localhost ~]# yum install -y ncompress
[root@localhost ~]# compress --help

命令语法:[ compress [选项] 文件或目录 ]

        -f              #强制覆盖掉目标文件
        -c              #将结果送到标准输出,无文件被改变
        -r              #递归的操作方式
        -b 数字         #压缩效率是一个介于9~16
        -d              #对文件进行解压缩而非压缩
        -v              #显示指令执行过程

通过使用compress -c命令压缩一个文件.

代码语言:javascript复制
[root@localhost ~]# ls -lh
total 944K
-rwxr-xr-x. 1 root root 942K Sep 26  2017 bash

[root@localhost ~]# compress -c bash > bash.Z

[root@localhost ~]# ls -lh
total 1.6M
-rwxr-xr-x. 1 root root 942K Sep 26  2017 bash
-rw-r--r--. 1 root root 596K Nov 16 06:38 bash.Z

通过使用compress -d命令解压一个文件.

代码语言:javascript复制
[root@localhost ~]# ls -lh
total 596K
-rw-r--r--. 1 root root 596K Nov 16 06:38 bash.Z

[root@localhost ~]# compress -d bash.Z

[root@localhost ~]# ls -lh
total 944K
-rw-r--r--. 1 root root 942K Nov 16 06:38 bash

zip压缩: zip命令压缩的拓展名.zip 各种系统都支持zip的压缩格式,所以在一定程度上,是可以通用的.

代码语言:javascript复制
[root@localhost ~]# yum install -y zip unzip
[root@localhost ~]# zip --help

命令语法:[ zip/unzip [选项] 文件或目录 ]

        -r              #递归压缩,连同子目录一同压缩
        -S              #包含系统和隐藏文件
        -v              #显示指令执行过程
        -q              #不显示指令执行过程

通过使用zip -r -v 命令将/etc/目录全部内容压缩.

代码语言:javascript复制
[root@localhost ~]# zip -r -v lyshark.zip /etc/

[root@localhost ~]# ls -lh
total 12M
-rw-r--r--. 1 root root 12M Nov 16 09:46 lyshark.zip

使用unzip -l命令查询一个压缩包中的文件.

代码语言:javascript复制
[root@localhost ~]# unzip -l lyshark.zip

使用unzip -d命令将文件解压到指定目录.

代码语言:javascript复制
[root@localhost ~]# unzip lyshark.zip -d /tmp/

[root@localhost ~]# ls -lh /tmp/
total 12K
drwxr-xr-x. 84 root root 8.0K Nov  6 11:02 etc

gzip压缩: gzip是Linux系统默认支持的压缩格式,其可以与tar命令结合使用,gzip对文本文件有60%~70%的压缩率。

代码语言:javascript复制
[root@localhost ~]# gzip --help

命令语法:[ gzip/zcat [选项] 文件或目录 ]

        -a              #使用ASCII文字模式
        -d              #解开压缩文件
        -f              #强行压缩文件
        -l              #列出压缩文件的相关信息
        -n              #压缩时,不保存原来的文件名称及时间戳
        -N              #压缩时,保存原来的文件名称及时间戳
        -q              #不显示警告信息
        -r              #递归处理
        -v              #显示指令执行过程

通过使用gzip -rv命令压缩一个文件.

代码语言:javascript复制
[root@localhost ~]# ls -lh
total 944K
-rwxr-xr-x. 1 root root 942K Sep 26  2017 bash

[root@localhost ~]# gzip -rv bash
bash:    51.2% -- replaced with bash.gz

[root@localhost ~]# ls -lh
total 460K
-rwxr-xr-x. 1 root root 460K Sep 26  2017 bash.gz

通过使用gzip -l/zcat -l命令查询一个文件.

代码语言:javascript复制
[root@localhost ~]# gzip -l bash.gz

         compressed        uncompressed  ratio uncompressed_name
             470300              964544  51.2% bash

[root@localhost ~]# zcat -l bash.gz
         compressed        uncompressed  ratio uncompressed_name
             470300              964544  51.2% bash

通过使用gzip -dv / zcat命令解压一个文件.

代码语言:javascript复制
[root@localhost ~]# ls -lh
total 460K
-rwxr-xr-x. 1 root root 460K Sep 26  2017 bash.gz

[root@localhost ~]# gzip -dv bash.gz
bash.gz:         51.2% -- replaced with bash

[root@localhost ~]# zcat -d bash.gz >bash_zcat

bzip2压缩: bzip2命令用于创建和管理,包括解压缩,使用这个命令必须要先安装,因为这个命令并没有集成安装.

代码语言:javascript复制
[root@localhost ~]# yum install -y bzip2
[root@localhost ~]# bzip2 --hlep

命令语法:[ bzip2/bzcat [选项] 文件或目录 ]

        -c              #输出压缩解压过程
        -d              #执行解压缩
        -k              #解压后保留原始文件
        -v              #压缩或解压时详细输出
        -z              #强制执行压缩

通过使用bzip2 -kzv命令将bash文件压缩.

代码语言:javascript复制
[root@localhost ~]# ls -lh
total 944K
-rwxr-xr-x. 1 root root 942K Sep 26  2017 bash

[root@localhost ~]# bzip2 -kzv bash
  bash:     2.164:1,  3.697 bits/byte, 53.79% saved, 964544 in, 445742 out.

通过使用bzip2 -kdv命令解压缩bash.bz2文件.

代码语言:javascript复制
[root@localhost ~]# ls -lh
total 436K
-rwxr-xr-x. 1 root root 436K Sep 26  2017 bash.bz2

[root@localhost ~]# bzip2 -kdv bash.bz2
  bash.bz2: done

tar 归档并压缩: 该命令常常与gz,bz2等压缩命令结合使用。

代码语言:javascript复制
[root@localhost ~]# tar --hlep

命令语法:[ tar [选项] 文件或目录 ]

        -c              #新建打包
        -t              #查看打包文件
        -x              #解压打包文件
        -j              #通过bz2进行压缩与解压
        -z              #通过gz进行压缩与解压
        -J              #通过xz进行压缩与解压
        -v              #显示压缩与解压过程
        -C              #指定解压到哪里

通过使用tar -czvf xzvf tvf命令压缩解压与查询.

代码语言:javascript复制
[root@localhost ~]# tar -czvf lyshark.tar.gz /etc/*        #将/etc/*目录下的内容压缩成lyshark.tar.gz
[root@localhost ~]# tar -tvf lyshark.tar.gz                #查询包中的内容
[root@localhost ~]# tar -xzvf lyshark.tar.gz -C /etc/      #将压缩包,解压到/etc/目录下

通过使用tar -cjvf xjvf tvf命令压缩解压与查询.

代码语言:javascript复制
[root@localhost ~]# tar -cjvf lyshark.tar.bz2 /etc/*        #将/etc/*目录下的内容压缩成lyshark.tar.bz2
[root@localhost ~]# tar -tvf lyshark.tar.bz2                #查询包中的内容
[root@localhost ~]# tar -xjvf lyshark.tar.bz2 -C /etc/      #将压缩包,解压到/etc/目录下

通过使用tar -cJvf xJvf tvf命令压缩解压与查询.

代码语言:javascript复制
[root@localhost ~]# tar -cJvf lyshark.tar.xz /etc/*         #将/etc/*目录下的内容压缩成lyshark.tar.xz
[root@localhost ~]# tar -tvf lyshark.tar.xz                 #查询包中的内容
[root@localhost ~]# tar -xJvf lyshark.tar.xz -C /etc/       #将压缩包,解压到/etc/目录下

cpio块级压缩: cpio用来建立或者还原备份的工具程序,cpio命令可以备份任何东西包括设备文件。

代码语言:javascript复制
[root@localhost ~]# cpio --help

压缩语法:[ cpio –cvBo > [文件|设备] ]

        -c              #使用portable format存储方式
        -v              #显示过程
        -B              #设定输入输出块为512bytes
        -o              #进入copy-out模式(压缩)

查看语法:[ cpio –ivct < [cpio文件] ]

        -i              #将数据从文件复制到系统中
        -c              #使用portable format存储方式
        -t              #查看CPIO压缩包内容

还原语法:[ cpio –idvcu < [cpio文件] ]

        -i              #进入copy-in模式(解压)
        -d              #恢复到指定位置(视压缩方式恢复)
        -v              #显示过程
        -c              #使用portable format存储方式
        -u              #替换所有文件,无提示

使用cpio -cvBo命令,来备份/etc/目录

代码语言:javascript复制
[root@localhost ~]# find /etc/ -print | cpio -cvBo > /root/etc.cpio

[root@localhost ~]# ls -lh
total 109M
-rw-r--r--. 1 root root 109M Nov 16 10:50 etc.cpio

使用cpio -cvBo命令,将/etc/目录下的内容备份到/sdb磁盘

代码语言:javascript复制
[root@localhost ~]# find /etc/ -print | cpio -cvBo > /dev/vdb

使用cpio -ivct命令查询,压缩包内容

代码语言:javascript复制
[root@localhost ~]# ls -lh
total 109M
-rw-r--r--. 1 root root 109M Nov 16 10:50 etc.cpio

[root@localhost ~]# cpio -ivct < etc.cpio

使用cpio -idvcu还原文件到/etc/目录

代码语言:javascript复制
[root@localhost ~]# ls -lh
total 109M
-rw-r--r--. 1 root root 109M Nov 16 10:50 etc.cpio

[root@localhost ~]# cpio -idvcu < /root/etc.cpio

制作ISO镜像: mkisofs命令用来将指定的目录与文件做成ISO 9660格式的映像文件。

代码语言:javascript复制
[root@localhost ~]# mkisofs --help

命令语法:[ mkisofs [选项] 文件或目录 ]

        -o              #后面接镜像名
        -r              #连同文件属性一起记录
        -v              #显示构建过程
        -m              #排除指定文件
        -V              #新建volume

通过mkisofs制作一个镜像将/etc目录制作成lyshark.iso.

代码语言:javascript复制
[root@localhost ~]# mkisofs -r -v -o /root/lyshark.iso /etc/

[root@localhost ~]# ls -lh
total 123M
-rw-r--r--. 1 root root 123M Nov 16 11:14 lyshark.iso

磁盘测速与拷贝: dd命令用于磁盘测速与备份,该命令很底层所以可以完成很多备份工具无法完成的功能。

代码语言:javascript复制
[root@localhost ~]# dd --help

备份语法:[ dd [if=源文件] [of=输出] [count=计数] ]

        if=文件名        #输入文件名
        of=文件名        #输出文件名
        bs=bytes        #读入计数
        count=blocks    #仅拷贝blocks个块
        /dev/zero       #是字符设备会不断返回0值字节
        /dev/null       #空设备,相当于一个垃圾桶

通过使用dd进行磁盘测速,测磁盘读写速度(可分别测试1024,2048,4096,8192)

代码语言:javascript复制
[root@localhost ~]# dd if=/dev/zero of=/dev/null bs=1024 count=10000
10000 0 records in
10000 0 records out
10240000 bytes (10 MB) copied, 0.00852247 s, 1.2 GB/s

通过使用dd进行磁盘常规备份

代码语言:javascript复制
#将本地的 /dev/sda 整盘备份到 /dev/hdd
[root@localhost ~]# dd if=/dev/sda /of=/dev/hdd

#将 /dev/sda 全盘数据备份成指定路径的image文件
[root@localhost ~]# dd if=/dev/sda of=/tmp/image

#将image备份文件恢复到指定盘/dev/sdb
[root@localhost ~]# dd if=/tmp/image of=/dev/sdb

#备份 /dev/sda 全盘数据,并利用gzip工具进行压缩,保存到/tmp/image.gz
[root@localhost ~]# dd if=/dev/sda | gzip > /tmp/image.gz

#恢复,将压缩的备份文件 /tmp/image.gz ,恢复到制定盘 /dev/sdb
[root@localhost ~]# gizp -dc /tmp/image.gz | dd of=/dev/sdb

通过使用dd命令备份磁盘MBR,与恢复分区MBR.

代码语言:javascript复制
#备份MBR,备份磁盘 /dev/sda 开始的512个字节大小的MBR信息到指定文件/tmp/mbr512
#其中:count=1 指仅拷贝一个块;bs=512 指块大小为512个字节
[root@localhost ~]# dd if=/dev/sda of=/tmp/mbr512 count=1 bs=512
1 0 records in
1 0 records out
512 bytes (512 B) copied, 0.00015245 s, 3.4 MB/s

#恢复MBR,将备份 /tmp/mbr512 的MBR信息写到磁盘开始部分 /dev/sda
[root@localhost ~]# dd if=/tmp/mbr512 of=/dev/sda
1 0 records in
1 0 records out
512 bytes (512 B) copied, 0.000201242 s, 2.5 MB/s

通过使用dd命令拷贝内存数据与光盘数据到指定位置。

代码语言:javascript复制
#拷贝内存内容到磁盘
[root@localhost ~]# dd if=/dev/mem of=/tmp/mem_image bs=1024(指定块大小为1k)
dd: error reading ‘/dev/mem’: Bad address
632 0 records in
632 0 records out
647168 bytes (647 kB) copied, 0.001591 s, 407 MB/s

#拷贝光盘内容到指定文件夹,并保存为/tmp/LyShark.iso文件
[root@localhost ~]# dd if=/dev/sr0 of=/tmp/LyShark.iso
1249 0 records in
1248 0 records out
638976 bytes (639 kB) copied, 0.368021 s, 1.7 MB/s

#利用随机数填充磁盘,彻底销毁磁盘 /dev/sdb 数据
[root@localhost ~]# dd if=/dev/urandom of=/dev/sdb

0 人点赞