Linux常见的压缩命令

Compress
非常老旧的UNIX系统上的压缩软件, 了解即可, 需先安装ncompress
yum install ncompress

gzip, zcat
gzip是应用最广的压缩命令(替代compress, 并提供更好的压缩比), gzip可以解开compress, zip与gzip等软件所压缩的文件
gzip [-cdtv#] 文件名zcat 文件名.gz-c: 将压缩的数据输出到屏幕上, 可通过数据流重定向来处理-d: 解压缩-t: 可以用来检验一个压缩文件的一致性, 看看文件有无错误-v: 可以显示出原文件/压缩文件的压缩比等信息-#: 压缩等级, -1最快, 但压缩比最差, -9最慢, 但是压缩比最好, 默认为-6示例:gzip /tmp/man.config 压缩文件, 会将原文件压缩成man.config.gz, 原文件就不再存在了zcat /tmp/man.config.gz zcat可以查看被压缩的纯文本文件gzip -d /tmp/man.config.gz 解压缩, 压缩包就不再存在了gzip -c man.config > man.config.gz 这种方式会保留原文件
bzip2, bzcat
bzip2是为了取代gzip并提供更佳的压缩比, 用法与gzip几乎相同
bzip2 [-cdkzv#] 文件名bzcat 文件名.bz2-c: 将压缩过程中产生的数据输出到屏幕上-d: 解压缩-k: 保留原文件-z: 压缩-v: 显示压缩比等信息-#: 同gzip, 压缩比的参数示例:bzip2 -z man.configbzcat man.comfig.bz2bzip2 -d man.config.bz2bzip2 -c man.config > man.config.bz2
打包命令: tar
tar可以将多个目录或文件打包成一个大文件, 同时可以通过gzip/bzip2的支持, 将该文件同时进行压缩, win的winRAR也支持.tar.gz文件名的解压缩
tar
打包与压缩tar [-j][-z] [cv] [-f 新建的文件名] filename ...查看文件名tar [-j][-z][tv] [-f 新建的文件名]解压缩tar [-j][-z] [xv] [-f 新建的文件名] [-C 目录]-c: 新建打包文件, 可搭配-v来查看过程中被打包的文件名-t: 查看打包文件的内容含有哪些文件名, 重点在查看文件名-x: 解打包或解压缩, 可搭配-C在特定目录解开注意: -c, -t, -x不可同时出现在一串命令行中-j: 通过bzip2的支持进行压缩/解压缩, 此时文件名最好为*.tar.bz2-z: 通过gzip的支持进行压缩/解压缩, 此时文件名最好为*.tar.gz-v: 在压缩/解压缩的过程中, 将正在处理的文件名显示出来-f filename: -f后接要被处理的文件名, 建议-f单独写一个参数-C 目录: 在特定目录解压缩其他-p: 保留备份数据的原本权限与属性, 常用于备份(-c)重要的配置文件-P: 保留绝对路径, 即允许备份数据中含有根目录存在--exclude=FILE: 在压缩的过程中排除FILE简单化:压缩: tar -jcv -f filename.tar.bz2查询: tar -jtv -f filename.tar.bz2解压缩: tar -jxv -f filename.tar.bz2 -C 解压缩的目录示例:备份/etc目录tar -jcvp -f /tmp/etc_backup.tar.bz2 /etc查看tar文件的数据内容root@DESKTOP-LMORNNS:/tmp# tar -jtv -f ./etc_backup.tar.bz2 | headdrwxr-xr-x root/root 0 2022-07-17 12:08 etc/-rw-r--r-- root/root 14464 2020-02-17 07:20 etc/services-rw-r--r-- root/root 104 2022-02-17 08:44 etc/lsb-releasedrwxr-xr-x root/root 0 2022-03-25 06:18 etc/vulkan/drwxr-xr-x root/root 0 2020-02-10 23:17 etc/vulkan/explicit_layer.d/drwxr-xr-x root/root 0 2020-02-10 23:17 etc/vulkan/icd.d/drwxr-xr-x root/root 0 2020-02-10 23:17 etc/vulkan/implicit_layer.d/drwxr-xr-x root/root 0 2022-05-05 18:59 etc/docker/-rw------- root/root 244 2022-05-05 18:59 etc/docker/key.json-rw-r--r-- root/root 2932 2013-04-02 05:29 etc/protocols可以看到备份的文件会去掉根目录, 若压缩包在tmp解开, 则文件名会变成/tmp/etc/xxx若有根目录, 则解压缩后的文件会覆盖/etc的内容, 不安全解压缩tar -jxv -f ./etc_backup.tar.bz2 -C /tmp解压缩单个文件1.在压缩包中找到对应的文件名tar -jtv -f ./etc_backup.tar.bz2 |grep 'shadow'2.解压缩, 注意文件名不带根目录tar -jxv -f ./etc_backup.tar.bz2 etc/shadow打包目录, 但是排除某些文件tar -jcv -f ./etc_backup.tar.bz2 --exclude=/etc/shadow* /etc
更多演示
先复习下文件的时间参数:- mtime: 文件的修改时间- ctime: 文件的状态(权限或属性)被改变时会修改的时间- atime: 文件被访问时会修改的时间仅备份比某个时刻还要新的文件参数:--newer-mtime: 仅指定mtime--newer: 表示后续的日期包含mtime与ctime1. 先通过find找出比/etc/passwd还要新的文件find /etc -newer /etc/passwd以及查看passwd的时间参数root@DESKTOP-LMORNNS:/tmp# ll /etc/passwd-rw-r--r-- 1 root root 1643 Apr 29 15:49 /etc/passwd2. 仅备份/etc下比/etc/passwd还新的文件tar -jcvp -f /tmp/etc_backup2.tar.bz2 --newer-mtime="2022/04/29" /etc/*3. 查看打包的文件, grep -v '/$'可以查看非/结尾的文件名root@DESKTOP-LMORNNS:/tmp# tar -jtv -f etc_backup2.tar.bz2 |grep -v '/$'lrwxrwxrwx root/root 0 2022-07-11 22:45 etc/alternatives/locate -> /usr/bin/mlocatelrwxrwxrwx root/root 0 2022-05-05 18:10 etc/alternatives/cc -> /usr/bin/gcclrwxrwxrwx root/root 0 2022-05-05 18:10 etc/alternatives/c++ -> /usr/bin/g++lrwxrwxrwx root/root 0 2022-05-05 18:10 etc/alternatives/cpp -> /usr/bin/cpp...
- 打包的文件.tar, 称呼为tarfile, 如果还进行了压缩, 如.tar.bz2, 我们称呼为tarball
- 特殊应用


完整备份工具: dump
dump
- dump可以指定备份的等级

- dump命令使用 ```shell dump [-Suvj] [-level] [-f 备份文件] 待备份数据
-S: 仅列出后面的待备份数据需要多少磁盘空间才能够备份完毕 -u: 将这次dump的时间记录到/etc/dumpdateS文件中 -v: 显示dump过程 -j: 加入bzip2支持, 对数据进行压缩, 默认压缩等级为2 -level: 从-0~-9共10个等级 -f: 后接备份文件 -W: 列出在/etc/fstab里面的具有dump设置的分区是否有备份过
- 使用dump备份单一文件系统时, 可以使用完整的dump功能- 使用dump备份目录, 并非单一文件系统- 所有备份数据都必须要在该目录下面- 且仅能使用level 0 , 即仅支持完整备份- 不支持-u参数, 即无法创建/etc/dumpdates这个level备份的时间记录文件- <a name="TZ3k1"></a>### restoredump的恢复使用restore这个命令```shell查看dump文件restore -t [-f dumpfile] [-h]比较dump与实际文件restore -C [-f dumpfile] [-D 挂载点]进入互动模式restore -i [-f dumpfile]还原整个文件系统restore -r [-f dumpfile]以上四种模式不能混用, 参数如下:-t: 此模式查看dump文件中有什么重要数据, 类似tar -c-C: 此模式可以将dump内的数据拿出来跟实际的文件系统做比较最终会列出在dump文件内有记录的, 且目前文件系统不一样的文件-i: 进入互动模式, 可以仅还原部分文件, 用在dump目录的还原-r: 用来将整个文件系统还原-h: 查看完整备份数据中的inode与文件系统label等信息-f: 后接dump文件-D: 与-C进行搭配, 可以查出后面的挂载点与dump内有不同的文件
- 用restore查看dump后的备份数据内容

- 比较差异并还原整个文件系统


- 仅还原部分文件的restore互动模式

其他常见的压缩与备份工具
dd
- tar可以来备份关键数据, 而dd则可以用来备份整块分区或整块磁盘
- dd可以读取磁盘设备的内容(几乎是直接读取扇区), 然后将整个设备备份成一个文件


cpio
- 可以备份任何东西, 包括设备文件
- 但需配合类似find等命令


重点回顾

