Linux常见的压缩命令

image.png

Compress

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

  1. yum install ncompress

image.png

gzip, zcat

gzip是应用最广的压缩命令(替代compress, 并提供更好的压缩比), gzip可以解开compress, zip与gzip等软件所压缩的文件

  1. gzip [-cdtv#] 文件名
  2. zcat 文件名.gz
  3. -c: 将压缩的数据输出到屏幕上, 可通过数据流重定向来处理
  4. -d: 解压缩
  5. -t: 可以用来检验一个压缩文件的一致性, 看看文件有无错误
  6. -v: 可以显示出原文件/压缩文件的压缩比等信息
  7. -#: 压缩等级, -1最快, 但压缩比最差, -9最慢, 但是压缩比最好, 默认为-6
  8. 示例:
  9. gzip /tmp/man.config 压缩文件, 会将原文件压缩成man.config.gz, 原文件就不再存在了
  10. zcat /tmp/man.config.gz zcat可以查看被压缩的纯文本文件
  11. gzip -d /tmp/man.config.gz 解压缩, 压缩包就不再存在了
  12. gzip -c man.config > man.config.gz 这种方式会保留原文件

bzip2, bzcat

bzip2是为了取代gzip并提供更佳的压缩比, 用法与gzip几乎相同

  1. bzip2 [-cdkzv#] 文件名
  2. bzcat 文件名.bz2
  3. -c: 将压缩过程中产生的数据输出到屏幕上
  4. -d: 解压缩
  5. -k: 保留原文件
  6. -z: 压缩
  7. -v: 显示压缩比等信息
  8. -#: gzip, 压缩比的参数
  9. 示例:
  10. bzip2 -z man.config
  11. bzcat man.comfig.bz2
  12. bzip2 -d man.config.bz2
  13. bzip2 -c man.config > man.config.bz2

打包命令: tar

tar可以将多个目录或文件打包成一个大文件, 同时可以通过gzip/bzip2的支持, 将该文件同时进行压缩, win的winRAR也支持.tar.gz文件名的解压缩

tar

  1. 打包与压缩
  2. tar [-j][-z] [cv] [-f 新建的文件名] filename ...
  3. 查看文件名
  4. tar [-j][-z][tv] [-f 新建的文件名]
  5. 解压缩
  6. tar [-j][-z] [xv] [-f 新建的文件名] [-C 目录]
  7. -c: 新建打包文件, 可搭配-v来查看过程中被打包的文件名
  8. -t: 查看打包文件的内容含有哪些文件名, 重点在查看文件名
  9. -x: 解打包或解压缩, 可搭配-C在特定目录解开
  10. 注意: -c, -t, -x不可同时出现在一串命令行中
  11. -j: 通过bzip2的支持进行压缩/解压缩, 此时文件名最好为*.tar.bz2
  12. -z: 通过gzip的支持进行压缩/解压缩, 此时文件名最好为*.tar.gz
  13. -v: 在压缩/解压缩的过程中, 将正在处理的文件名显示出来
  14. -f filename: -f后接要被处理的文件名, 建议-f单独写一个参数
  15. -C 目录: 在特定目录解压缩
  16. 其他
  17. -p: 保留备份数据的原本权限与属性, 常用于备份(-c)重要的配置文件
  18. -P: 保留绝对路径, 即允许备份数据中含有根目录存在
  19. --exclude=FILE: 在压缩的过程中排除FILE
  20. 简单化:
  21. 压缩: tar -jcv -f filename.tar.bz2
  22. 查询: tar -jtv -f filename.tar.bz2
  23. 解压缩: tar -jxv -f filename.tar.bz2 -C 解压缩的目录
  24. 示例:
  25. 备份/etc目录
  26. tar -jcvp -f /tmp/etc_backup.tar.bz2 /etc
  27. 查看tar文件的数据内容
  28. root@DESKTOP-LMORNNS:/tmp# tar -jtv -f ./etc_backup.tar.bz2 | head
  29. drwxr-xr-x root/root 0 2022-07-17 12:08 etc/
  30. -rw-r--r-- root/root 14464 2020-02-17 07:20 etc/services
  31. -rw-r--r-- root/root 104 2022-02-17 08:44 etc/lsb-release
  32. drwxr-xr-x root/root 0 2022-03-25 06:18 etc/vulkan/
  33. drwxr-xr-x root/root 0 2020-02-10 23:17 etc/vulkan/explicit_layer.d/
  34. drwxr-xr-x root/root 0 2020-02-10 23:17 etc/vulkan/icd.d/
  35. drwxr-xr-x root/root 0 2020-02-10 23:17 etc/vulkan/implicit_layer.d/
  36. drwxr-xr-x root/root 0 2022-05-05 18:59 etc/docker/
  37. -rw------- root/root 244 2022-05-05 18:59 etc/docker/key.json
  38. -rw-r--r-- root/root 2932 2013-04-02 05:29 etc/protocols
  39. 可以看到备份的文件会去掉根目录, 若压缩包在tmp解开, 则文件名会变成/tmp/etc/xxx
  40. 若有根目录, 则解压缩后的文件会覆盖/etc的内容, 不安全
  41. 解压缩
  42. tar -jxv -f ./etc_backup.tar.bz2 -C /tmp
  43. 解压缩单个文件
  44. 1.在压缩包中找到对应的文件名
  45. tar -jtv -f ./etc_backup.tar.bz2 |grep 'shadow'
  46. 2.解压缩, 注意文件名不带根目录
  47. tar -jxv -f ./etc_backup.tar.bz2 etc/shadow
  48. 打包目录, 但是排除某些文件
  49. tar -jcv -f ./etc_backup.tar.bz2 --exclude=/etc/shadow* /etc

更多演示

  1. 先复习下文件的时间参数:
  2. - mtime: 文件的修改时间
  3. - ctime: 文件的状态(权限或属性)被改变时会修改的时间
  4. - atime: 文件被访问时会修改的时间
  5. 仅备份比某个时刻还要新的文件
  6. 参数:
  7. --newer-mtime: 仅指定mtime
  8. --newer: 表示后续的日期包含mtimectime
  9. 1. 先通过find找出比/etc/passwd还要新的文件
  10. find /etc -newer /etc/passwd
  11. 以及查看passwd的时间参数
  12. root@DESKTOP-LMORNNS:/tmp# ll /etc/passwd
  13. -rw-r--r-- 1 root root 1643 Apr 29 15:49 /etc/passwd
  14. 2. 仅备份/etc下比/etc/passwd还新的文件
  15. tar -jcvp -f /tmp/etc_backup2.tar.bz2 --newer-mtime="2022/04/29" /etc/*
  16. 3. 查看打包的文件, grep -v '/$'可以查看非/结尾的文件名
  17. root@DESKTOP-LMORNNS:/tmp# tar -jtv -f etc_backup2.tar.bz2 |grep -v '/$'
  18. lrwxrwxrwx root/root 0 2022-07-11 22:45 etc/alternatives/locate -> /usr/bin/mlocate
  19. lrwxrwxrwx root/root 0 2022-05-05 18:10 etc/alternatives/cc -> /usr/bin/gcc
  20. lrwxrwxrwx root/root 0 2022-05-05 18:10 etc/alternatives/c++ -> /usr/bin/g++
  21. lrwxrwxrwx root/root 0 2022-05-05 18:10 etc/alternatives/cpp -> /usr/bin/cpp
  22. ...
  • 打包的文件.tar, 称呼为tarfile, 如果还进行了压缩, 如.tar.bz2, 我们称呼为tarball
  • 特殊应用

image.png

image.png


完整备份工具: dump

dump

  • dump可以指定备份的等级

image.png

  • 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设置的分区是否有备份过

  1. - 使用dump备份单一文件系统时, 可以使用完整的dump功能
  2. ![image.png](https://cdn.nlark.com/yuque/0/2022/png/281275/1658146579847-02c7a3e9-85d0-479e-9075-f65c6b298601.png#clientId=u6806730f-560e-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=1308&id=u36d1e875&margin=%5Bobject%20Object%5D&name=image.png&originHeight=1308&originWidth=662&originalType=binary&ratio=1&rotation=0&showTitle=false&size=1141437&status=done&style=none&taskId=u89ed4f05-8f10-4765-a686-8d78e42a780&title=&width=662)
  3. - 使用dump备份目录, 并非单一文件系统
  4. - 所有备份数据都必须要在该目录下面
  5. - 且仅能使用level 0 , 即仅支持完整备份
  6. - 不支持-u参数, 即无法创建/etc/dumpdates这个level备份的时间记录文件
  7. - ![image.png](https://cdn.nlark.com/yuque/0/2022/png/281275/1658146708858-e0cdb891-d1ba-45b1-9685-5d22ee13f62e.png#clientId=u6806730f-560e-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=429&id=u178d3701&margin=%5Bobject%20Object%5D&name=image.png&originHeight=429&originWidth=615&originalType=binary&ratio=1&rotation=0&showTitle=false&size=347954&status=done&style=none&taskId=u050a5251-67f9-44d2-8ac0-465b8a2132e&title=&width=615)
  8. <a name="TZ3k1"></a>
  9. ### restore
  10. dump的恢复使用restore这个命令
  11. ```shell
  12. 查看dump文件
  13. restore -t [-f dumpfile] [-h]
  14. 比较dump与实际文件
  15. restore -C [-f dumpfile] [-D 挂载点]
  16. 进入互动模式
  17. restore -i [-f dumpfile]
  18. 还原整个文件系统
  19. restore -r [-f dumpfile]
  20. 以上四种模式不能混用, 参数如下:
  21. -t: 此模式查看dump文件中有什么重要数据, 类似tar -c
  22. -C: 此模式可以将dump内的数据拿出来跟实际的文件系统做比较
  23. 最终会列出在dump文件内有记录的, 且目前文件系统不一样的文件
  24. -i: 进入互动模式, 可以仅还原部分文件, 用在dump目录的还原
  25. -r: 用来将整个文件系统还原
  26. -h: 查看完整备份数据中的inode与文件系统label等信息
  27. -f: 后接dump文件
  28. -D: 与-C进行搭配, 可以查出后面的挂载点与dump内有不同的文件
  • 用restore查看dump后的备份数据内容

image.png

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

image.png
image.png

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

image.png


其他常见的压缩与备份工具

dd

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

image.png
image.png

cpio

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

image.png

image.png


重点回顾

image.png