本文是《Linux 入门指南》的第十五篇文章,以 Ubuntu 21.10 为例,介绍了 Linux 文件压缩。

zip(压缩 文件/目录 为 .zip 文件)

描述:

zip 是一款文件压缩软件,可以压缩 文件/目录 为 .zip 文件。

用法:

      zip [选项] [文件名] [文件名]/[目录名]

选项:

选项 意义
-P 使用密码加密 .zip 文件
-f 更新现有的文件
-u 与 -f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中
-d 从压缩文件内删除指定的文件
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中
-r 递归处理,将指定目录下的所有文件和子目录一并处理
-j 只保存文件名称及其内容,而不存放任何目录名称
-0 仅存储
-l 压缩文件时,把LF字符置换成LF+CR字符
-1 压缩得更快
-9 压缩得更好
-q 不显示指令执行过程
-v 显示指令执行过程或显示版本信息
-c 替每个被压缩的文件加上注释
-z 替压缩文件加上注释
-@ 从标准输入读取名称
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同
-x 压缩时排除符合条件的文件
-i 只压缩符合条件的文件
-F 尝试修复已损坏的压缩文件
-D 压缩文件内不建立目录名称
-A 调整可执行的自动解压缩文件
-J 删除压缩文件前面不必要的数据
-T 检查备份文件内的每个文件是否正确无误
-X 不保存额外的文件属性
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效
-e 加密
-n 不压缩具有特定字尾字符串的文件
-h2 显示更多帮助

实例:

压缩目录(将目录 /home/jianrry 压缩为文件 jianrry.zip,保存在当前目录)

zip -r jianrry.zip /home/jianrry

unzip(将 .zip 文件解压缩为 文件/目录)

描述:

unzip 是一款文件解压缩软件,可以将 .zip 文件解压缩为 文件/目录。

用法:

      unzip [选项] [文件名]

选项:

选项 意义
-P 使用密码解密加密的 .zip 文件
-p 与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换
-l 显示压缩文件内所包含的文件
-f 更新现有的文件
-t 检查压缩文件是否正确
-u 与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中
-z 仅显示压缩文件的备注文字
-v 执行时显示详细的信息
-T 时间戳存档到最新
-x 指定不要处理.zip压缩文件中的哪些文件
-d 指定文件解压缩后所要存储的目录
-n 解压缩时不要覆盖原有的文件
-q 执行时不显示任何信息
-o 不必先询问用户,unzip执行后覆盖原有文件
-a 对文本文件进行必要的字符转换
-j 不处理压缩文件中原有的目录路径
-aa 将所有文件视为文本
-U 对所有非 ASCII Unicode 使用转义符
-UU 忽略任何 Unicode 字段
-C 压缩文件中的文件名称区分大小写
-L 将压缩文件中的全部文件名改为小写
-X 解压缩时同时回存文件原来的UID/GID
-V 保留VMS的文件版本信息
-K 保持 setuid/setgid/tacky 权限
-M 将输出结果送到 more 程序处理
-O CHARSET 指定 DOS、Windows 和 OS/2 档案的字符编码
-I CHARSET 指定 UNIX 和其他档案的字符编码

实例:

解压缩目录(将文件 jianrry.zip 解压缩,解压到当前目录)

unzip jianrry.zip

tar(压缩/解压缩 tar 文件)

描述:

tar 是一款文件 压缩/解压缩 软件,可以压缩/解压缩 tar 文件。

用法:

      tar [选项] [文件名] [文件名]/[目录名]

选项:

选项 长选项 意义
-A --catenate, --concatenate 追加 tar 文件至归档
-c --create 创建一个新归档
--delete 从归档(非磁带!)中删除
-d --diff, --compare 找出归档和文件系统的差异
-r --append 追加文件至归档结尾
--test-label 测试归档卷标并退出
-t --list 列出归档内容
-u --update 仅追加比归档中副本更新的文件
-x --extract, --get 从归档中解出文件
--check-device 当创建增量归档时检查设备号(默认)
-g --listed-incremental=FILE 处理新式的 GNU 格式的增量备份
-G --incremental 处理老式的 GNU 格式的增量备份
--hole-detection=TYPE 用于探测holes 的技术
--ignore-failed-read 当遇上不可读文件时不要以非零值退出
--level=NUMBER 所创建的增量列表归档的输出级别
--no-check-device 当创建增量归档时不要检查设备号
--no-seek 归档不可检索
-n --seek 归档可检索
--occurrence[=NUMBER] 仅处理归档中每个文件的第 NUMBER个事件;仅当与以下子命令 --delete,--diff, --extract 或是 --list中的一个联合使用时,此选项才有效。而且不管文件列表是以命令行形式给出或是通过-T 选项指定的;NUMBER 值默认为 1
--sparse-version=MAJOR[.MINOR] 设置所用的离散格式版本(隐含--sparse)
-S --sparse 高效处理离散文件
--add-file=FILE 添加指定的 FILE 至归档(如果名字以 -开始会很有用的)
-C --directory=DIR 改变至目录 DIR
--exclude=PATTERN 排除以 PATTERN 指定的文件
--exclude-backups 排除备份和锁文件
--exclude-caches 除标识文件本身外,排除包含 CACHEDIR.TAG 的目录中的内容
--exclude-caches-all 排除包含 CACHEDIR.TAG 的目录
--exclude-caches-under 排除包含 CACHEDIR.TAG 的目录中所有内容
--exclude-ignore=FILE 若存在FILE, 则从其中读取每个目录的例外匹配项
--exclude-ignore-recursive=FILE 若存在FILE, 则从其中为每个目录及其子目录读取需要排除的例外匹配项
--exclude-tag=FILE 除 FILE 自身外,排除包含 FILE 的目录中的内容
--exclude-tag-all=FILE 排除包含 FILE 的目录
--exclude-tag-under=FILE 排除包含 FILE 的目录中的所有内容
--exclude-vcs 排除版本控制系统目录
--exclude-vcs-ignores 从VCS 忽略文件中读取排除匹配项
--no-null 禁用上一次的效果 --null 选项
--no-recursion 避免目录中的自动降级
--no-unquote 不要unquote 输入文件或成员名称
--no-verbatim-files-from 把以‘-’开始的文件作为选项(默认)
--null 读取以空终止的名字; 隐含 --verbatim-files-from
--recursion 目录递归(默认)
-T --files-from=FILE 从 FILE 中获取文件名来解压或创建文件
--unquote unquote 输入文件或成员名称(默认)
--verbatim-files-from 逐字读取文件名(不处理选项或进行转义)
-X --exclude-from=FILE 排除 FILE 中列出的模式串
--anchored 模式串匹配文件名头部
--ignore-case 忽略大小写
--no-anchored 模式串匹配任意‘/’后字符(对 exclusion 为默认值)
--no-ignore-case 匹配大小写(默认)
--no-wildcards 逐字匹配字符串
--no-wildcards-match-slash 通配符不匹配‘/’
--wildcards 使用通配符(对 exclusion 为默认值)
--wildcards-match-slash 通配符匹配‘/’(对 exclusion 为默认值)
--keep-directory-symlink 解压时保留已存在的目录符号链接
--keep-newer-files 不要替换比归档中副本更新的已存在的文件
-k, --keep-old-files 解压时不替换存在的文件, 而将其认为是错误
--no-overwrite-dir 保留已存在目录的元数据
--one-top-level[=DIR] 创建子目录以避免解压松散文件
--overwrite 解压时重写存在的文件
--overwrite-dir 解压时重写已存在目录的元数据(默认)
--recursive-unlink 解压目录之前先清除目录层次
--remove-files 在添加文件至归档后删除它们
--skip-old-files 解压时不替换存在的文件,而是自动忽略
-U --unlink-first 在解压要重写的文件之前先删除它们
-W --verify 在写入以后尝试校验归档
--ignore-command-error 忽略子进程的退出代码
--no-ignore-command-error 将子进程的非零退出代码认为发生错误
-O --to-stdout 解压文件至标准输出
--to-command=COMMAND 将解压的文件通过管道传送至另一个程序
--atime-preserve[=METHOD] 在输出的文件上保留访问时间,要么通过在读取(默认 METHOD=‘replace’)后还原时间,要不就不要在第一次(METHOD=‘system’)设置时间
--clamp-mtime 当文件比 --mtime 指定的文件更新时仅更新时间
--delay-directory-restore 直到解压结束才设置修改时间和所解目录的权限
--group=名称 强制将 NAME 作为所添加的文件的组所有者
--group-map=FILE 用FILE 映射文件所有者GIDs 和名字
--mode=CHANGES 强制将所添加的文件(符号)更改为权限 CHANGES
--mtime=DATE-OR-FILE 从 DATE-OR-FILE 中为添加的文件设置 mtime
-m --touch 不要解压文件的修改时间
--no-delay-directory-restore 取消 --delay-directory-restore 选项的效果
--no-same-owner 将文件解压为您所有(普通用户默认此项)
--no-same-permissions 从归档中解压权限时使用用户的掩码位(默认为普通用户服务)
--numeric-owner 总是以数字代表用户/组的名称
--owner=名称 强制将 NAME 作为所添加的文件的所有者
--owner-map=FILE 用FILE 映射文件所有者UIDs 和名字
-p --preserve-permissions, --same-permissions 解压文件权限信息(默认只为超级用户服务)
--same-owner 尝试解压时保持所有者关系一致(超级用户默认此项)
--sort=ORDER 目录排序顺序: none(默认), name 或inode
-s --preserve-order, --same-order 成员参数按归档中的文件顺序列出
--acls 开启 POSIX ACLs 支持
--no-acls 关闭 POSIX ACLs 支持
--no-selinux 关闭 SELinux 上下文支持
--no-xattrs 关闭extended 属性支持
--selinux 开启 SELinux 上下文支持
--xattrs 开启extended 属性支持
--xattrs-exclude=MASK 为xattr 关键字指定排除匹配项
--xattrs-include=MASK 为xattr 关键字指定包含匹配项
--force-local 即使归档文件存在副本还是把它认为是本地归档
-f --file=ARCHIVE 使用归档文件或 ARCHIVE 设备
-F --info-script=名称, --new-volume-script=名称 在每卷磁带最后运行脚本(隐含 -M)
-L --tape-length=NUMBER 写入 NUMBER × 1024 字节后更换磁带
-M --multi-volume 创建/列出/解压多卷归档文件
--rmt-command=COMMAND 使用指定的 rmt COMMAND 代替 rmt
--rsh-command=COMMAND 使用远程 COMMAND 代替 rsh
--volno-file=FILE 使用/更新 FILE 中的卷数
-b --blocking-factor=BLOCKS 每个记录 BLOCKS x 512 字节
-B --read-full-records 读取时重新分块(只对 4.2BSD 管道有效)
-i --ignore-zeros 忽略归档中的零字节块(即文件结尾)
--record-size=NUMBER 每个记录的字节数 NUMBER,乘以 512
-H --format=FORMAT 创建指定格式的归档
--old-archive, --portability 等同于 --format=v7
--pax-option=关键字[[:]=值][,关键字[[:]=值]]... 控制 pax 关键字
--posix 等同于 --format=posix
-V --label=TEXT 创建带有卷名 TEXT 的归档;在列出/解压时,使用 TEXT 作为卷名的模式串
-a --auto-compress 使用归档后缀名来决定压缩程序
-I --use-compress-program=PROG 通过 PROG 过滤(必须是能接受 -d 选项的程序)
-j --bzip2 通过 bzip2 过滤归档
-J --xz 通过 xz 过滤归档
--lzip 通过 lzip 过滤归档
--lzma 通过 xz 过滤归档
--lzop 通过 lzop 过滤归档
--no-auto-compress 不使用归档后缀名来决定压缩程序
--zstd 通过 zstd 过滤归档
-z --gzip, --gunzip, --ungzip 通过 gzip 过滤归档
-Z --compress, --uncompress 通过 compress 过滤归档
--backup[=CONTROL] 在删除前备份,选择 CONTROL 版本
--hard-dereference 跟踪硬链接;将它们所指向的文件归档并输出
-h --dereference 跟踪符号链接;将它们所指向的文件归档并输出
-K --starting-file=MEMBER-NAME 从归档中的 MEMBER-NAME 成员处开始读取归档
--newer-mtime=DATE 当只有数据改变时比较数据和时间
-N --newer=DATE-OR-FILE, --after-date=DATE-OR-FILE 只保存比 DATE-OR-FILE 更新的文件
--one-file-system 创建归档时保存在本地文件系统中
-P --absolute-names 不要从文件名中清除引导符‘/’
--suffix=STRING 在删除前备份,除非被环境变量 SIMPLE_BACKUP_SUFFIX 覆盖,否则覆盖常用后缀
--strip-components=NUMBER 解压时从文件名中清除 NUMBER 个引导部分
--transform=EXPRESSION, --xform=EXPRESSION 使用 sed 代替 EXPRESSION 来进行文件名变换
--checkpoint[=NUMBER] 每隔 NUMBER 个记录显示进度信息(默认为 10 个)
--checkpoint-action=ACTION 在每个检查点上执行 ACTION
--full-time 按文件原本时间格式打印
--index-file=FILE 将详细输出发送至 FILE
-l --check-links 只要不是所有链接都被输出就打印信息
--no-quote-chars=STRING 禁用来自 STRING 的字符引用
--quote-chars=STRING 来自 STRING 的额外的引用字符
--quoting-style=STYLE 设置名称引用风格;有效的 STYLE 值请参阅以下说明
-R --block-number 每个信息都显示归档内的块数
--show-defaults 显示 tar 默认选项
--show-omitted-dirs 列表或解压时,列出每个不匹配查找标准的目录
--show-snapshot-field-ranges 显示快照文件区的有效范围
--show-transformed-names, --show-stored-names 显示变换后的文件名或归档名
--totals[=SIGNAL] 处理归档后打印出总字节数;当此SIGNAL 被触发时带参数 -打印总字节数;允许的信号为: SIGHUP,SIGQUIT,SIGINT,SIGUSR1 和 SIGUSR2;同时也接受不带 SIG 前缀的信号名称
--utc 以 UTC 格式打印文件修改时间
-v --verbose 详细地列出处理的文件
--warning=KEYWORD 警告控制
-w --interactive, --confirmation 每次操作都要求确认
-o 创建归档时,相当于 --old-archive;展开归档时,相当于 --no-same-owner
-? --help 显示此帮助列表
--restrict 禁用某些潜在的有危险的选项
--usage 显示简短的用法说明
--version 打印程序版本

实例:

压缩目录(将目录 /home/jianrry 压缩为文件 jianrry.tar.gz,保存在当前目录)

tar czvf jianrry.tar.gz /home/jianrry

解压缩目录(将文件 jianrry.tar.gz 解压缩,解压到当前目录)

tar xzvf jianrry.tar.gz

,