Linux的`tar`命令 笔记250717

发布于:2025-07-18 ⋅ 阅读:(15) ⋅ 点赞:(0)

Linux的tar命令 笔记250717

tar 是 Linux/Unix 系统中用于打包、压缩和解压文件和目录的核心命令。它的名字来源于 Tape Archive(磁带存档),但现在广泛用于文件归档。理解 tar 对于高效管理文件至关重要。

核心概念:

  1. 打包: 将多个文件或目录合并成一个单一的文件(.tar 文件),不压缩(或使用后续压缩)。
  2. 压缩: 使用压缩算法(如 gzip, bzip2, xz)减小 .tar 文件的大小,生成 .tar.gz, .tar.bz2, .tar.xz 等文件。
  3. 解包:.tar 文件还原成原来的多个文件和目录结构。
  4. 解压: 先解压缩(如 .tar.gz -> .tar),再解包还原文件。

基本语法:

tar [选项] [操作模式] [归档文件名] [文件或目录列表...]

核心功能与选项
     核心功能与选项
         创建归档文件 打包[压缩]

  • 基本创建(不压缩):
tar -cvf archive.tar file1 dir1  # -c: 创建, -v: 显示过程, -f: 指定文件名
  • 创建+压缩(常用组合):
tar -zcvf archive.tar.gz dir1     # -z: 用gzip压缩 → .tar.gz 或 .tgz
tar -jcvf archive.tar.bz2 dir1    # -j: 用bzip2压缩 → .tar.bz2
tar -Jcvf archive.tar.xz dir1     # -J: 用xz压缩 → .tar.xz

         提取归档文件 解包[解压缩]

  • 提取到当前目录
tar -xvf archive.tar      # -x: 提取 .tar 或 .tar.xx (现代tar自动识别)
tar -zxvf archive.tar.gz  # 解压+提取 .tar.gz
tar -jxvf archive.tar.bz2  # 解压+提取 .tar.bz2
tar -Jxvf archive.tar.xz  # 解压+提取 .tar.xz
  • 提取到指定目录
tar -xvf archive.tar -C /target/path  # -C: 指定目标目录, 目录必须已存在

tar -C 不会主动创建文件夹, 文件夹必须已经存在

创建文件夹,并解压到该文件夹

mkdir dir && tar -xvf file -C dir

创建文件夹,并解压到该文件夹,然后进入该文件夹

###  创建文件夹,并解压到该文件夹,然后进入该文件夹
mkdir -pm 777 mysql-xxx.debs && tar -xvf mysql-server_5.7.42-1debian10_amd64.deb-bundle*.tar -C $_ && cd $_

         查看归档内容 不解包

tar -tvf archive.tar      # 列出内容(不提取)
tar -ztvf archive.tar.gz  # 查看 .tar.gz
tar -jtvf archive.tar.bz2  # 查看 .tar.bz2
tar -Jtvf archive.tar.xz  # 查看 .tar.xz

关键组成部分:

  • 操作模式: 指定 tar 要做什么(必须且只能选一个):
    • -c--create: 创建一个新的归档文件。
    • -x--extract: 解包(提取)归档文件中的内容。
    • -t--list: 列出归档文件中的内容(不解包)。
    • -r--append: 追加文件到已存在的归档文件末尾
    • -u--update: 仅追加比归档文件中同名文件更新的文件。
    • -A--catenate--concatenate: 合并多个 .tar 文件。
  • 选项: 修改操作模式的行为(可以组合使用):
    • -f--file=归档文件: 指定归档文件名这是最重要的选项之一! 通常紧跟操作模式后指定文件名(如 -cf archive.tar)。
    • -v--verbose: 详细模式。在处理文件时显示它们的名称(让你看到过程)。
    • -z--gzip: 使用 gzip 进行压缩(创建时)或解压缩(提取/查看时)。对应 .tar.gz.tgz
    • -j--bzip2: 使用 bzip2 进行压缩/解压缩。对应 .tar.bz2.tbz/.tbz2
    • -J--xz: 使用 xz 进行压缩/解压缩。对应 .tar.xz.txz(通常压缩率最高,但也最慢)。
    • --zstd: 使用 zstd 进行压缩/解压缩。对应 .tar.zst(较新算法,在速度和压缩率之间取得很好平衡)。
    • -C--directory=目录: 改变到指定目录后再执行操作(常用于解压到特定目录)。
    • -p--preserve-permissions: 保留文件的原始权限和所有权(在提取时特别重要,尤其是 root 操作的系统文件)。
    • --same-owner: 尝试以原所有者身份还原文件(通常需要 root 权限)。
    • -k--keep-old-files: 提取时不覆盖已存在的文件。
    • --overwrite: 提取时覆盖已存在的文件(默认行为)。
    • --exclude=模式: 排除匹配指定模式(如 *.logtemp/)的文件或目录。
    • -h--dereference: 归档符号链接指向的实际文件,而不是链接本身。
    • --wildcards: 允许在 --exclude 或提取时指定文件时使用通配符(如 *.txt)。
  • 归档文件名: 要创建、提取或列出的 .tar, .tar.gz, .tar.bz2 等文件的名称。
  • 文件或目录列表: 指定要打包的文件或目录(对于 -c 模式),或指定要从归档中提取/列出的特定文件(对于 -x-t 模式,可选)。

常用场景与示例:

  1. 创建未压缩的 tar 包 (打包):

    tar -cvf project_backup.tar /path/to/project/
    
    • -c: 创建归档
    • -v: 显示详细过程
    • -f project_backup.tar: 指定归档文件名为 project_backup.tar
    • /path/to/project/: 要打包的目录
  2. 创建 gzip 压缩的 tar 包 (打包并压缩):

    tar -czvf project_backup.tar.gz /path/to/project/
    
    • -z: 使用 gzip 压缩
  3. 创建 bzip2 压缩的 tar 包:

    tar -cjvf project_backup.tar.bz2 /path/to/project/
    
    • -j: 使用 bzip2 压缩
  4. 创建 xz 压缩的 tar 包:

    tar -cJvf project_backup.tar.xz /path/to/project/
    
    • -J: 使用 xz 压缩 (注意是大写的 J)
  5. 列出 tar 包中的内容:

    tar -tvf project_backup.tar.gz
    
    • -t: 列出内容
    • -v: 显示详细信息(权限、所有者、大小、时间)
    • -f project_backup.tar.gz: 指定要查看的归档文件(支持压缩格式)
  6. 提取整个 tar 包到当前目录 (解包):

    tar -xvf project_backup.tar.gz
    
    • -x: 提取
    • -v: 显示详细过程
    • -f project_backup.tar.gz: 指定要提取的归档文件(支持压缩格式)
  7. 提取整个 tar 包到指定目录 (解包):

    tar -xvf project_backup.tar.gz -C /target/directory/
    
    • -C /target/directory/: 先切换到 /target/directory/ 目录,然后再执行提取操作。
  8. 从 tar 包中提取特定文件 (解包):

    tar -xvf project_backup.tar.gz path/to/specific/file.txt path/to/another/file.log
    
    • 在归档文件名后面列出要提取的文件的完整路径(路径需与 tar -tvf 列出的路径完全一致)。
  9. 从 tar 包中提取匹配通配符的文件 (需要 --wildcards):

    tar -xvf project_backup.tar.gz --wildcards '*.txt'
    
    • --wildcards '*.txt': 提取所有 .txt 文件。
  10. 创建归档时排除特定文件/目录:

    tar -czvf project_backup.tar.gz --exclude='*.tmp' --exclude='logs/' /path/to/project/
    
    • --exclude='*.tmp': 排除所有 .tmp 文件
    • --exclude='logs/': 排除 logs 目录(及其内容)
  11. 追加文件到已有的 tar 包 (未压缩):

    tar -rvf project_backup.tar newfile1.txt newdir/
    
    • -r: 追加到归档末尾
    • -f project_backup.tar: 指定要追加到的归档文件(必须是未压缩的 .tar 文件
    • 注意: 不能直接追加到压缩过的归档文件(如 .tar.gz)。需要先解压成 .tar,追加,再重新压缩。
  12. 更新归档中已有的文件 (仅添加比归档内更新的版本):

    tar -uvf project_backup.tar /path/to/project/
    
    • -u: 更新(追加比归档内更新的文件)
    • -f project_backup.tar: 指定要更新的归档文件(必须是未压缩的 .tar 文件
    • 同样不能直接更新压缩过的归档文件。

压缩格式选择指南:

选项 压缩格式 常见后缀 压缩速度 解压速度 压缩率 适用场景
-z gzip .tar.gz, .tgz 中等 通用、快速压缩/解压
-j bzip2 .tar.bz2, .tb2 中等 较好 需要较高压缩率,不太在意时间
-J xz .tar.xz, .txz 非常慢 中等 最高 追求极致压缩率,时间不重要
--zstd zstd .tar.zst 非常快 非常快 好到很好 推荐! 平衡速度和压缩率的最佳选择

重要提示与最佳实践:

  1. -f 选项是必需的: 必须用 -f--file 明确指定归档文件名。忘记 -f 可能导致 tar 尝试使用磁带机等默认设备,造成错误。
  2. 操作模式必选其一: -c, -x, -t, -r, -u, -A 必须且只能选择一个。
  3. 压缩选项与后缀匹配: 创建时使用的压缩选项 (-z, -j, -J, --zstd) 通常与文件后缀对应。提取或查看时,tar 通常能自动检测压缩类型并正确解压,不需要显式指定压缩选项(直接用 -xvf-tvf 即可)。显式指定(如 -xzvf)也不会错。
  4. 解压路径: 默认解压到当前目录。使用 -C 选项指定目标目录是更安全、更清晰的做法,避免意外覆盖当前目录的文件。
  5. 权限保留: 使用 -p--preserve-permissions--same-owner 来保留文件权限和所有者(尤其是备份系统文件时)。普通用户操作自己的文件通常不需要。
  6. 查看内容: 在解压大归档文件之前,务必先用 tar -tvf 查看内容,确认里面有什么以及解压路径是否符合预期。
  7. 通配符:--exclude 或提取特定文件时使用通配符 (*, ?),需要加上 --wildcards 选项。
  8. 追加/更新限制: -r (追加) 和 -u (更新) 只能用于未压缩.tar 文件。不能直接操作 .tar.gz, .tar.bz2 等压缩包。
  9. 相对路径 vs 绝对路径: 创建归档时,tar 默认记录的是命令行中指定的路径。如果指定绝对路径 (如 /home/user/docs),解压时也会尝试解压到绝对路径,可能需要 root 权限且可能覆盖系统文件。最佳实践是进入要打包的目录的父目录,然后使用相对路径打包:
    cd /path/to/parent/
    tar -czvf backup.tar.gz relative/path/to/target/
    
    这样解压时,文件会相对当前目录创建 relative/path/to/target/,更安全可控。
  10. Windows 兼容性: 在 Windows 上解压 Linux 创建的 tar 包时(如用 7-Zip),文件权限信息可能会丢失。反之亦然。

熟练掌握 tar 命令是 Linux 系统管理和文件传输的基础技能。结合不同的选项和压缩格式,你可以高效地进行文件备份、迁移和分发。



























Fedora42中文版的 tar --help

tar --help
用法: tar [选项...] [FILE]...
GNU 'tar' saves many files together into a single tape or disk archive, and can
restore individual files from the archive.

Examples:
  tar -cf archive.tar foo bar  # Create archive.tar from files foo and bar.
  tar -tvf archive.tar         # List all files in archive.tar verbosely.
  tar -xf archive.tar          # Extract all files from archive.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   -T
                             把以‘-’开始的文件作为选项(默认)
      --null                 -T 读取以空终止的名字; 隐含
                             --verbatim-files-from
      --recursion            目录递归(默认)
  -T, --files-from=FILE      从 FILE
                             中获取文件名来解压或创建文件
      --unquote              unquote 输入文件或成员名称(默认)
      --verbatim-files-from  -T
                             逐字读取文件名(不处理选项或进行转义)
  -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   wildcards match '/' (default)

 重写控制:

      --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
                             成员参数按归档中的文件顺序列出

 操作extended 文件属性:

      --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        创建指定格式的归档

 FORMAT 是以下格式中的一种:
    gnu                      GNU tar 1.13.x 格式
    oldgnu                   GNU 格式,其中 tar 版本 <= 1.12
    pax                      POSIX 1003.1-2001 (pax) 格式
    posix                    等同于 pax
    ustar                    POSIX 1003.1-1988 (ustar) 格式
    v7                       旧的 V7 tar 格式

      --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 --format=lzma 过滤归档
      --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              打印程序版本

长选项和相应短选项具有相同的强制参数或可选参数。

The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control may be set with --backup or VERSION_CONTROL, values are:

  none, off       never make backups
  t, numbered     make numbered backups
  nil, existing   numbered if numbered backups exist, simple otherwise
  never, simple   always make simple backups

--quoting-style 选项的有效参数为:

  literal
  shell
  shell-always
  shell-escape
  shell-escape-always
  c
  c-maybe
  escape
  locale
  clocale

此 tar 默认为:
--format=gnu -f- -b20 --quoting-style=escape --rmt-command=/etc/rmt
--rsh-command=/usr/bin/ssh
root@n100:~# chmod -h
chmod: 缺少操作对象
请尝试执行 "chmod --help" 来获取更多信息。
root@n100:~# chmod --help
用法:chmod [选项]... 模式[,模式]... 文件...
 或:chmod [选项]... 八进制模式 文件...
 或:chmod [选项]... --reference=参考文件 文件...
将每个 <文件> 的模式变更为指定 <模式>。
使用 --reference 时,把每个 <文件> 的模式设置为与 <参考文件> 相同。

  -c, --changes          类似 verbose 选项,但仅在做出修改时进行报告
  -f, --silent, --quiet  不显示大多数错误消息
  -v, --verbose          为每个处理的文件输出一条诊断信息
      --dereference      影响每个符号链接指向的文件,而非符号链接本身
  -h, --no-dereference   影响每个符号链接,而非其指向的文件
      --no-preserve-root  不特殊对待 "/"(默认行为)
      --preserve-root    不允许在 "/" 上递归操作
      --reference=参考文件  使用 <参考文件> 的模式,而非指定 <模式>。
                            如果 <参考文件> 是符号链接,则总是解引用它。
  -R, --recursive        递归修改文件和目录

指定了 -R 选项时,以下选项设置如何遍历目录层次。
如果您指定了多于一个选项,那么只有最后一个会生效。默认值是 -H。

  -H                     如果命令行参数是一个指向目录的符号链接,则对其
                         进行遍历
  -L                     遍历每一个遇到的指向目录的符号链接
  -P                     不遍历任何符号链接

      --help        显示此帮助信息并退出
      --version     显示版本信息并退出

每个 <模式> 都应当符合此格式:"[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+"。

GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告任何翻译错误
完整文档 <https://www.gnu.org/software/coreutils/chmod>
或者在本地使用:info '(coreutils) chmod invocation'



























AI翻译的 tar --help

用法: tar [选项...] [文件]...
GNU 'tar' 将多个文件一起保存到单个磁带或磁盘归档文件中,并可以从归档中恢复单个文件。

示例:
  tar -cf archive.tar foo bar  # 从文件 foo 和 bar 创建 archive.tar。
  tar -tvf archive.tar         # 详细列出 archive.tar 中的所有文件。
  tar -xf archive.tar          # 从 archive.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  检测文件空洞的技术
      --ignore-failed-read   对不可读的文件不退出非零状态
      --level=NUMBER         为创建的已列出增量归档设置转储级别
      --no-check-device      创建增量归档时不检查设备号
      --no-seek              归档文件不可查找
  -n, --seek                 归档文件可查找
      --occurrence[=NUMBER]  仅处理归档中每个文件的第 NUMBER 次出现;
                             此选项仅在与 --delete, --diff, --extract 或 --list 子命令之一结合使用,
                             且通过命令行或 -T 选项给出了文件列表时才有效;NUMBER 默认为 1
      --sparse-version=主版本[.次版本]
                             设置要使用的稀疏文件格式版本(隐含 --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           不对输入文件或成员名称进行去引号处理
      --no-verbatim-files-from   -T 将文件名以破折号开头的视为选项(默认)
      --null                  -T 读取以空字符(null)终止的名称;隐含 --verbatim-files-from
      --recursion            递归进入目录(默认)
  -T, --files-from=FILE      从 FILE 中获取要提取或创建的名称
      --unquote              对输入文件或成员名称进行去引号处理(默认)
      --verbatim-files-from  -T 原样读取文件名(不处理转义或选项)
  -X, --exclude-from=FILE    排除 FILE 中列出的模式

 文件名匹配选项(影响排除和包含模式):

      --anchored             模式匹配文件名开头
      --ignore-case          忽略大小写
      --no-anchored          模式在任何 '/' 之后匹配(用于排除的默认)
      --no-ignore-case       区分大小写匹配(默认)
      --no-wildcards         原文字符串匹配
      --no-wildcards-match-slash   通配符不匹配 '/'
      --wildcards            使用通配符(用于排除的默认)
      --wildcards-match-slash   通配符匹配 '/'(用于排除的默认)

 覆盖控制:

      --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           强制使用 NAME 作为添加文件的组
      --group-map=FILE       使用 FILE 映射文件所有者的 GID 和名称
      --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  从归档中提取权限时应用用户的 umask(普通用户的默认)
      --numeric-owner        始终对用户/组名称使用数字
      --owner=NAME           强制使用 NAME 作为添加文件的所有者
      --owner-map=FILE       使用 FILE 映射文件所有者的 UID 和名称
  -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            禁用扩展属性支持
      --selinux              启用 SELinux 上下文支持
      --xattrs               启用扩展属性支持
      --xattrs-exclude=MASK  指定 xattr 键的排除模式
      --xattrs-include=MASK  指定 xattr 键的包含模式

 设备选择和切换:

      --force-local          即使归档文件有冒号也视为本地文件
  -f, --file=ARCHIVE         使用归档文件或设备 ARCHIVE
  -F, --info-script=NAME, --new-volume-script=NAME
                             在每卷磁带结束时运行脚本(隐含 -M)
  -L, --tape-length=NUMBER   在写入 NUMBER x 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         忽略归档中的零块(意味着 EOF)
      --record-size=NUMBER   每条记录 NUMBER 字节,512 的倍数

 归档格式选择:

  -H, --format=FORMAT        创建指定格式的归档

 FORMAT 是以下之一:
    gnu                      GNU tar 1.13.x 格式
    oldgnu                   符合 tar <= 1.12 的 GNU 格式
    pax                      POSIX 1003.1-2001 (pax) 格式
    posix                    同 pax
    ustar                    POSIX 1003.1-1988 (ustar) 格式
    v7                       旧 V7 tar 格式

      --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 开始
      --newer-mtime=DATE     仅比较数据更改的日期和时间
  -N, --newer=日期或文件, --after-date=日期或文件
                             仅存储比 DATE-OR-FILE 新的文件
      --one-file-system      创建归档时停留在本地文件系统中
  -P, --absolute-names       不剥离文件名前的 '/' 字符
      --suffix=STRING        删除前备份,覆盖通常的后缀(默认为 '~',
                             除非被环境变量 SIMPLE_BACKUP_SUFFIX 覆盖)

 文件名转换:

      --strip-components=NUMBER   提取时从文件名中剥离 NUMBER 个前导路径分量
      --transform=表达式, --xform=表达式
                             使用 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              打印程序版本

长选项的强制或可选参数也适用于任何对应的短选项。

备份后缀是 '~',除非用 --suffix 或 SIMPLE_BACKUP_SUFFIX 设置。
版本控制可以用 --backup 或 VERSION_CONTROL 设置,值有:

  none, off       从不创建备份
  t, numbered     创建带编号的备份
  nil, existing   如果存在带编号备份则创建带编号的,否则创建简单的
  never, simple   总是创建简单的备份

--quoting-style 选项的有效参数是:

  literal
  shell
  shell-always
  shell-escape
  shell-escape-always
  c
  c-maybe
  escape
  locale
  clocale

*此* tar 的默认设置为:
--format=gnu -f- -b20 --quoting-style=escape --rmt-command=/usr/sbin/rmt
--rsh-command=/usr/bin/rsh



























Ubuntu24.04 中文版的 tar --help

tar --help
用法: tar [选项...] [FILE]...
GNU 'tar' saves many files together into a single tape or disk archive, and can
restore individual files from the archive.

Examples:
  tar -cf archive.tar foo bar  # Create archive.tar from files foo and bar.
  tar -tvf archive.tar         # List all files in archive.tar verbosely.
  tar -xf archive.tar          # Extract all files from archive.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   -T
                             把以‘-’开始的文件作为选项(默认)
      --null                 -T 读取以空终止的名字; 隐含
                             --verbatim-files-from
      --recursion            目录递归(默认)
  -T, --files-from=FILE      从 FILE
                             中获取文件名来解压或创建文件
      --unquote              unquote 输入文件或成员名称(默认)
      --verbatim-files-from  -T
                             逐字读取文件名(不处理选项或进行转义)
  -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
                             成员参数按归档中的文件顺序列出

 操作extended 文件属性:

      --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        创建指定格式的归档

 FORMAT 是以下格式中的一种:
    gnu                      GNU tar 1.13.x 格式
    oldgnu                   GNU 格式,其中 tar 版本 <= 1.12
    pax                      POSIX 1003.1-2001 (pax) 格式
    posix                    等同于 pax
    ustar                    POSIX 1003.1-1988 (ustar) 格式
    v7                       旧的 V7 tar 格式

      --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              打印程序版本

长选项和相应短选项具有相同的强制参数或可选参数。

The backup suffix is '~', unless set with --suffix or SIMPLE_BACKUP_SUFFIX.
The version control may be set with --backup or VERSION_CONTROL, values are:

  none, off       never make backups
  t, numbered     make numbered backups
  nil, existing   numbered if numbered backups exist, simple otherwise
  never, simple   always make simple backups

--quoting-style 选项的有效参数为:

  literal
  shell
  shell-always
  shell-escape
  shell-escape-always
  c
  c-maybe
  escape
  locale
  clocale

此 tar 默认为:
--format=gnu -f- -b20 --quoting-style=escape --rmt-command=/usr/sbin/rmt
--rsh-command=/usr/bin/rsh



























tar --zstd 详解

--zstdtar 命令中用于支持 Zstandard (zstd) 压缩算法的选项,这是一种由 Facebook 开发的高性能压缩算法,在速度和压缩率之间取得了优秀平衡。以下是详细解析:


     一、基本用法
         1. 创建 zstd 压缩包

tar --zstd -cvf archive.tar.zst file1 dir1
# 或(短选项形式)
tar -I zstd -cvf archive.tar.zst file1 dir1

         2. 解压 zstd 压缩包

tar --zstd -xvf archive.tar.zst
# 或
tar -I zstd -xvf archive.tar.zst

         3. 查看压缩包内容

tar --zstd -tvf archive.tar.zst

     二、高级参数:自定义压缩行为
通过 --zstd= 后接参数可调整压缩行为:

tar --zstd=OPTION -cvf archive.tar.zst /path

         常用参数:

参数 作用 示例
level=数字 设置压缩级别 (1-19, 默认 3) --zstd=level=12
threads=数字 设置多线程压缩 (0=自动) --zstd=threads=4
long 启用长距离模式 (提升压缩率) --zstd=long
ultra 解锁 >19 级别 (最高到 22) --zstd=level=20,ultra

示例:

# 使用最高压缩级别 + 多线程
tar --zstd=level=19,threads=0 -cvf backup.tar.zst /data

# 解压时显示进度(需 pv 工具)
tar --zstd -xvf backup.tar.zst | pv -b > /dev/null

     三、性能对比(参考)

算法 压缩速度 解压速度 压缩率 典型用例
zstd ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐ 实时日志、大型数据集
gzip ⭐⭐⭐ ⭐⭐⭐⭐ ⭐⭐ 通用场景
xz ⭐⭐ ⭐⭐⭐⭐⭐ 归档存储(不频繁访问)
zstd (–fast) ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐ 快速临时备份

💡 经验值

  • 级别 1:比 gzip -1 快 4倍,压缩率相当
  • 级别 19:压缩率接近 xz,但压缩速度快 5倍+,解压快 2倍+

     四、系统兼容性处理
         1. 确保 zstd 已安装

# Debian/Ubuntu
sudo apt install zstd

# RHEL/CentOS
sudo yum install zstd

# Arch
sudo pacman -S zstd

         2. 兼容旧版 tar 的替代命令

# 压缩
tar -cvf - file1 | zstd -T0 > archive.tar.zst  # -T0: 自动多线程

# 解压
zstd -d archive.tar.zst -o - | tar -xvf -

     五、典型用例
         1. 快速压缩大日志文件

tar --zstd=level=3,threads=0 -cvf logs_$(date +%F).tar.zst /var/log

         2. 最高压缩率归档

tar --zstd=level=19,long -cvf project_backup.tar.zst ~/project

         3. 解压到指定目录

tar --zstd -xvf backup.tar.zst -C /restore/path

         4. 查看压缩包内容并搜索

tar --zstd -tvf data.tar.zst | grep "report.csv"

     六、注意事项

  1. 版本要求

    • GNU tar ≥ 1.31 原生支持 --zstd
    • 旧版本需用 -I zstd 或管道操作
  2. 解压兼容性

    • 使用高压缩级别(>19)创建的包需要 zstd ≥ 1.4.0 才能解压
  3. 资源占用

    • 级别 >18 时内存消耗显著增加(建议 ≥32GB RAM)
  4. 扩展名约定

    • 标准扩展名:.tar.zst.tzst
    • 避免使用 .tar.zstd(非标准)

     总结
tar --zstd 是现代 Linux 系统中处理大文件/高频备份的理想选择,其优势在于:

  • 闪电级解压速度(适合频繁访问的数据)
  • 可调节的压缩效率(从实时压缩到归档存储)
  • 多线程支持(充分利用多核 CPU)

对于日常使用,推荐默认级别 3-5;对存储敏感场景可尝试级别 12-15(平衡点);极限压缩用 19+long 模式。



























tar 本身不支持 ZIP 格式, 可安装 zipunzip

在 Linux 中处理 ZIP 文件需要使用专门的工具,因为 tar 本身不支持 ZIP 格式。以下是完整的 ZIP 压缩/解压指南:


     一、ZIP 与 TAR 的本质区别

特性 TAR (+压缩) ZIP
格式 归档+可选压缩 归档+内置压缩
压缩算法 外部工具 (gzip/zstd 等) 内置 Deflate (或 ZIP 2.0)
跨平台性 主要类 Unix 系统 全平台通用 (Windows/Mac)
权限保留 完整保留 Linux 权限 部分保留

     二、ZIP 文件操作工具
需要安装 zipunzip 包:

# Debian/Ubuntu
sudo apt install zip unzip

# RHEL/CentOS
sudo yum install zip unzip

# Arch
sudo pacman -S zip unzip

     三、ZIP 压缩详解
         基础命令:

zip -r archive.zip file1 dir1  # -r: 递归包含子目录

         高级选项:

选项 作用 示例
-e 加密 (设置密码) zip -er secret.zip sensitive_data
-0 仅存储 (无压缩) zip -0r backup.zip /data
-1~-9 压缩级别 (1=最快, 9=最强) zip -9r max_compressed.zip large_dir
-s 大小 分卷压缩 (单位: m/k/g) zip -s 100m -r split.zip big_data
-x 排除文件 zip -r project.zip src/ -x "*.log"
-y 保留符号链接 zip -ry links.zip symlink_dir

         示例:

# 创建加密 ZIP
zip -e -r financial_2023.zip /finance -x "*.tmp"

# 最大压缩率归档
zip -9r full_backup.zip /home

# 分卷压缩 (生成 backup.zip, backup.z01, backup.z02...)
zip -s 500m -r backup.zip /backup_source

     四、ZIP 解压详解
         基础命令:

unzip archive.zip          # 解压到当前目录
unzip data.zip -d /target  # 解压到指定目录

         高级选项:

选项 作用 示例
-l 列出内容 (不解压) unzip -l archive.zip
-o 覆盖文件 (不提示) unzip -o update.zip
-n 不覆盖已存在文件 unzip -n legacy.zip
-P 密码解压 (不安全)⚠️ unzip -P "pass123" locked.zip
-q 静默模式 unzip -q large.zip
-j 忽略目录结构 (平铺文件) unzip -j images.zip

         分卷解压:

# 合并分卷后解压 (确保所有 .zXX 文件在同一目录)
zip -s 0 split.zip --out full.zip && unzip full.zip

# 直接解压首个分卷 (自动检测后续分卷)
unzip split.zip

     五、TAR 与 ZIP 互转
         1. TAR 转 ZIP:

tar cf - dir1 | zip backup.zip -  # 通过管道转换

         2. ZIP 转 TAR:

unzip -p archive.zip | tar xf -  # 提取到当前目录
unzip -p archive.zip | tar xf - -C /target  # 提取到指定目录

         3. 保留权限的转换:

# ZIP → TAR (保留权限)
unzip -X archive.zip | tar xvf -  # -X 保留权限/UID/GID

# TAR → ZIP (保留权限)
tar cf - --format=posix dir | zip -X backup.zip -

     六、图形化工具替代方案

工具 安装命令 特点
file-roller (GNOME) sudo apt install file-roller 系统默认归档管理器
ark (KDE) sudo apt install ark KDE 桌面集成
p7zip (CLI) sudo apt install p7zip-full 支持 7z/zip/rar 等
# 用 7z 处理 ZIP (更强大的压缩)
7z a -tzip archive.zip dir1    # 压缩
7z x archive.zip               # 解压

     七、使用场景推荐

场景 推荐工具 原因
Linux 备份 tar + zstd 保留权限, 高性能
跨平台共享 zip Windows/Mac 原生支持
加密文档 zip -e7z -p 内置加密支持
超大文件 tar + 分卷 或 zip -s 更稳定的分卷处理

     八、注意事项

  1. 编码问题:解压 Windows 创建的 ZIP 时可能乱码

    unzip -O GBK win_file.zip  # 指定中文编码
    
  2. 权限保留:ZIP 不保留 SELinux 上下文,系统备份用 tar 更可靠

  3. 性能对比

    # 压缩速度测试 (1GB 目录)
    time zip -r test.zip large_dir      # ZIP 默认压缩
    time tar -czf test.tar.gz large_dir # gzip 压缩
    time tar -c --zstd -f test.tar.zst large_dir # zstd 压缩
    
  4. 安全警告:避免在命令行用 -P password,密码会暴露在历史记录中

掌握这些技巧后,您可以根据需求灵活选择工具处理 ZIP 和 TAR 文件!



























tar 与 7zip 全面对比指南

在 Linux 环境中,tar7zip 都是强大的归档/压缩工具,但设计理念和适用场景不同。以下是详细对比:


     一、核心差异总结

特性 tar 7zip (7z)
原生平台 Unix/Linux Windows (跨平台支持好)
核心功能 归档 (打包) 归档+压缩一体化
压缩算法 依赖外部工具 (gzip, xz等) 内置多种算法 (LZMA, LZMA2等)
权限保留 完整保留 Linux 权限 部分保留
典型扩展名 .tar, .tar.gz, .tar.xz .7z, .zip
分卷压缩 需配合 split 原生支持
加密支持 需配合 GPG 原生 AES-256 加密

     二、安装与基础使用
         1. tar (通常系统自带)

# 检查版本
tar --version

         2. 7zip 安装

# Ubuntu/Debian
sudo apt install p7zip-full

# RHEL/CentOS
sudo yum install p7zip

# Arch
sudo pacman -S p7zip

     三、压缩操作对比
         1. 创建压缩包

操作 tar 命令 7zip 命令
基础压缩 tar -czvf file.tar.gz dir 7z a archive.7z dir
指定格式 通过扩展名自动判断 7z a -tzip archive.zip dir
最高压缩率 tar -cJvf file.tar.xz dir 7z a -mx=9 archive.7z dir
排除文件 tar -czvf file.tar.gz --exclude='*.log' dir 7z a -x!*.log archive.7z dir
多线程压缩 tar -I 'zstd -T0' -cvf file.tar.zst dir 7z a -mmt=on archive.7z dir

         2. 性能对比 (1GB 测试数据)

工具/算法 压缩时间 解压时间 压缩后大小
tar + gzip (-9) 25s 5s 350MB
tar + zstd (-19) 40s 3s 300MB
7z (LZMA2 -mx9) 120s 15s 280MB
7z (zstd -mx9) 20s 4s 310MB

💡 结论:

  • 速度优先:tar + zstd 或 7z + zstd
  • 压缩率优先:7z LZMA2
  • 通用性:tar + gzip

     四、解压操作对比
         1. 基础解压

场景 tar 命令 7zip 命令
常规解压 tar -xzvf file.tar.gz 7z x archive.7z
指定目录 tar -xzvf file.tar.gz -C /path 7z x archive.7z -o/path
查看内容 tar -tvf file.tar.gz 7z l archive.7z
解压特定文件 tar -xzvf file.tar.gz path/to/file 7z x archive.7z path/to/file

         2. 特殊格式支持

# 7zip 支持 30+ 格式解压
7z x archive.zip    # ZIP
7z x archive.rar    # RAR
7z x archive.iso    # ISO
7z x archive.deb    # DEB包

     五、高级功能对比
         1. 加密

# 7zip 原生加密
7z a -pPASSWORD secure.7z dir

# tar 需配合 GPG
tar -czvf - dir | gpg -c > archive.tar.gz.gpg

         2. 分卷压缩

# 7zip 原生支持
7z a -v100m split.7z large_file  # 100MB分卷

# tar 需配合 split
tar -czvf - dir | split -b 100M - archive.tar.gz.part

         3. 固实压缩 (Solid Compression)

# 7zip 独有功能 (提升压缩率)
7z a -ms=on solid.7z dir

     六、跨平台协作
         1. 创建 Windows 兼容包

# 最佳选择:ZIP格式
7z a -tzip windows.zip dir   # 保留Windows路径分隔符

# tar 需注意:
tar -czvf windows.tar.gz --transform 's|/|\\|g' dir

         2. 处理Windows文件

# 解压含中文的ZIP
7z x -mcp=936 win_file.zip   # GBK编码

# tar 需转换编码
unzip -O GBK win_file.zip

     七、典型使用场景推荐

场景 推荐工具 理由
Linux系统备份 tar + zstd 保留完整权限,速度快
跨平台共享文件 7z (-tzip) Windows/Mac原生支持
极限压缩存档 7z (LZMA2) 最高压缩率
加密敏感数据 7z (AES-256) 强加密原生支持
处理多种压缩格式 7z 支持30+格式
自动化脚本 tar 所有Linux系统预装

     八、组合使用技巧
         1. 高压缩率归档

# 先用tar归档保留权限,再用7z压缩
tar -cvf - --format=posix dir | 7z a -si -mx=9 archive.tar.7z

         2. 解压复杂压缩包

# 解压tar.7z并保留权限
7z x -so archive.tar.7z | tar -xvf -

         3. 创建自解压包 (Windows)

7z a -sfx archive.exe dir

     九、注意事项

  1. 权限问题

    • tar 备份系统文件时加 sudo
    • 7z 解压后可能需要 chmod 修复权限
  2. 文件名编码

    • 跨平台时使用英文文件名最安全
    • 处理中文:7z-mcp 参数,tarconvmv 转换
  3. 资源消耗

    • 7z 的 LZMA2 算法可能消耗大量内存(>1GB RAM)
    • 在低配设备用 tar + gzip7z -m0=zstd

     总结选择建议

  • 纯 Linux 环境:优先使用 tar(系统集成好,权限保留完整)
  • 跨平台需求:使用 7zip(格式支持广泛,Windows友好)
  • 极致压缩率7z LZMA2(比 tar+xz 压缩率更高)
  • 速度敏感场景tar + zstd7z + zstd

掌握两者的特点和组合技巧,可以应对任何归档压缩需求!



























tar 与 RAR 全面对比指南

在归档和压缩领域,tarRAR 代表了两种不同的技术路线。以下是深度技术对比及使用场景分析:


     一、核心差异概览

特性 tar RAR
格式性质 开源标准 专有格式 (WinRAR 公司)
核心功能 打包 (需配合压缩工具) 打包+压缩一体化
压缩算法 依赖外部 (gzip/zstd/xz) 专属 RAR 算法 (v4/v5)
恢复记录 不支持 原生支持 (修复损坏文件)
分卷压缩 需配合 split 原生支持
多平台支持 Linux/macOS 原生 Windows 优先,Linux 需额外安装
授权模式 完全免费 共享软件 (40天试用)

     二、Linux 环境安装
         1. tar (系统自带)

# 所有 Linux 发行版预装
tar --version

         2. RAR 安装

# Ubuntu/Debian
sudo apt install rar unrar

# RHEL/CentOS
sudo yum install epel-release
sudo yum install rar unrar

# Arch
sudo pacman -S rar unrar

     三、压缩操作对比
         1. 基础压缩命令

操作 tar 命令 RAR 命令
创建压缩包 tar -czvf file.tar.gz dir rar a file.rar dir
最大压缩率 tar -cJvf file.tar.xz dir rar a -m5 file.rar dir
分卷压缩 tar -cvzf - dir | split -b 100M - part rar a -v100m file.rar dir
加密压缩 tar -czvf - dir | gpg -c > file.tar.gz.gpg rar a -pPASSWORD file.rar dir
排除文件 tar -czvf file.tar.gz --exclude='*.tmp' dir rar a -x*.tmp file.rar dir

         2. 压缩性能对比 (1GB 测试数据)

工具/算法 压缩时间 解压时间 压缩率
tar + gzip (-9) 25s 5s 35%
tar + zstd (-19) 40s 3s 30%
RAR (-m5) 80s 10s 28%
RAR (固实 -m5 -s) 120s 15s 25%

💡 结论:

  • 日常使用:tar + zstd (最佳速度/压缩平衡)
  • 极限压缩:RAR 固实模式 (比 tar+xz 高 3-5%)
  • 分卷压缩:RAR 原生支持更方便

     四、解压操作对比
         1. 基础解压命令

场景 tar 命令 RAR 命令
常规解压 tar -xzvf file.tar.gz unrar x file.rar
指定目录 tar -xzvf file.tar.gz -C /path unrar x file.rar /path
查看内容 tar -tvf file.tar.gz unrar l file.rar
解压特定文件 tar -xzvf file.tar.gz path/to/file unrar x file.rar path/to/file
修复损坏包 不支持 unrar r file.rar

         2. 特殊功能

# RAR 恢复记录 (创建时添加)
rar a -rr3% file.rar dir  # 添加3%恢复记录

# 测试压缩包完整性
unrar t file.rar

     五、技术优势对比
         tar 核心优势

  1. 系统集成
    # 结合 find 进行增量备份
    find /data -mtime -1 -exec tar -rvf inc_backup.tar {} \;
    
  2. 权限保留
    sudo tar -cpzvf full_system.tar.gz /  # 保留所有权限/SELinux上下文
    
  3. 流式处理
    # 直接打包传输
    tar -czf - /data | ssh user@backup-server "cat > backup.tar.gz"
    

         RAR 核心优势

  1. 恢复记录
    # 创建带10%恢复记录的压缩包
    rar a -rr10% -m5 critical_data.rar /database
    
  2. 固实压缩 (Solid Compression)
    rar a -s -m5 solid.rar thousands_of_small_files
    
  3. 多卷自解压
    # 创建Windows兼容的自解压分卷
    rar a -sfx -v100m installer.exe app_files
    

     六、跨平台协作方案
         1. Windows → Linux

# 解压 Windows 创建的 RAR
unrar x win_file.rar

# 处理中文文件名
unrar x -ierr win_file.rar  # 忽略编码错误
convmv -f GBK -t UTF-8 -r --notest *  # 修复编码

         2. Linux → Windows

# 创建 Windows 友好的压缩包
rar a -m5 -cp437 windows_backup.rar dir  # 强制使用兼容编码

# 替代方案:使用 ZIP
zip -r -9 windows_safe.zip dir

     七、使用场景推荐

场景 推荐工具 理由
Linux 系统备份 tar + zstd 完整保留权限,速度快
向 Windows 用户发送文件 RAR Windows 原生支持
关键数据存档 RAR (带恢复记录) 数据损坏修复能力
海量小文件压缩 RAR 固实模式 压缩率提升显著
自动化脚本 tar 所有 Linux 系统预装
加密敏感数据 RAR7z 比 tar+GPG 更易用

     八、安全注意事项

  1. RAR 密码安全性

    # 避免在命令行暴露密码 (历史记录风险)
    rar a -p$(cat password.txt) secure.rar dir  # 从文件读取密码
    
  2. tar 权限问题

    # 解压系统文件需 root 权限
    sudo tar -xpzvf system_backup.tar.gz -C /
    
  3. RAR 漏洞历史

    • 定期更新 unrar 工具 (已知漏洞:CVE-2022-3033)
    • 谨慎解压来源不明的 RAR 文件

     九、替代方案:7z vs RAR

特性 RAR 7z
授权 专有 开源 (Apache 2.0)
压缩率 极高 (固实模式) 极高 (LZMA2)
格式支持 有限 支持 30+ 格式
命令行体验 直观 复杂但功能更强
恢复记录 原生支持 需外部工具 (par2)
# 7z 实现类似 RAR 的功能
7z a -v100m -pPASSWORD -mhe=on archive.7z dir  # 分卷+加密

     十、终极选择建议

  • 纯 Linux 环境:优先 tar + zstd
    tar -I 'zstd -T0 -19' -cvf archive.tar.zst dir
    
  • Windows 兼容需求:使用 RAR
    rar a -m5 -rr5% -v500m backup.rar dir
    
  • 开源替代方案:选择 7z
    7z a -t7z -m0=zstd -mx=9 -v100m archive.7z dir
    

📌 关键结论

  • tar 是 Linux 的"瑞士军刀",适合系统级操作
  • RAR 在分卷压缩和恢复记录上独具优势
  • 优先考虑开源方案时,7z 是 RAR 的最佳替代品
  • 跨平台共享首选 ZIP 格式(通用性最佳)



























tar 是 Linux 中用于打包和解包文件的核心命令,支持多种压缩格式(如 .gz, .bz2, .xz)。以下是详细用法指南:


     基础语法

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

     核心功能与常用选项

功能 选项组合 说明
打包 tar -cvf 文件名.tar 文件/目录 创建归档(不压缩)
解包 tar -xvf 文件名.tar 提取归档内容
查看内容 tar -tvf 文件名.tar 列出归档内文件
打包+压缩 tar -czvf 文件名.tar.gz 文件/目录 用 gzip 压缩(速度快)
tar -cjvf 文件名.tar.bz2 文件/目录 用 bzip2 压缩(压缩率高)
tar -cJvf 文件名.tar.xz 文件/目录 用 xz 压缩(极高压缩率)
解压+解包 tar -xzvf 文件名.tar.gz 解压 gzip 归档
tar -xjvf 文件名.tar.bz2 解压 bzip2 归档
tar -xJvf 文件名.tar.xz 解压 xz 归档
解压到指定目录 tar -xvf 文件名.tar -C 目标目录 解包到目标目录(-C 需大写)
追加文件 tar -rvf 文件名.tar 新文件 向已有归档中添加文件(不支持压缩归档)

     关键选项解析

  • 主操作
    -c 创建归档 | -x 解包 | -t 查看内容 | -r 追加文件
  • 辅助选项
    -v 显示过程(verbose) | -f 文件名 指定归档文件(必须放在最后
  • 压缩类型
    -z gzip (.gz) | -j bzip2 (.bz2) | -J xz (.xz)
    (现代 Linux 中,解压时通常可省略压缩类型,tar -xf 能自动识别)

     实用示例

  1. 打包日志目录(不压缩)

    tar -cvf logs_backup.tar /var/log/
    
  2. 打包并用 gzip 压缩

    tar -czvf project.tar.gz /home/project/
    
  3. 解压到指定目录

    tar -xzvf backup.tar.gz -C /restore/path/
    
  4. 查看压缩包内容

    tar -tvf archive.tar.gz
    
  5. 排除特定文件

    tar -czvf data.tar.gz --exclude="*.tmp" /data/
    
  6. 保留文件权限(常用于备份)

    tar -cpzvf etc_backup.tar.gz /etc/  # `-p` 保留权限
    

     注意事项

  1. 选项顺序
    -f 必须紧跟文件名(如 tar -czvf 文件.tar.gz ✅,不能写成 tar -cfzv ❌)。

  2. 压缩效率对比

    • gzip (.gz):速度最快,压缩率一般
    • bzip2 (.bz2):速度慢,压缩率中等
    • xz (.xz):速度最慢,压缩率最高(适合大文件长期存储)
  3. 解压通用命令
    现代 tar 支持自动检测压缩类型,解压时只需:

    tar -xf 任意压缩包  # 自动识别 .tar/.gz/.bz2/.xz 等
    
  4. 跨系统兼容
    添加 --format=posix 可创建兼容 Windows 的归档(如 tar -cvf --format=posix)。


     扩展知识

  • 创建分卷压缩包(适合大文件分割):
    tar -czvf - bigfile | split -b 2G - bigfile_part.tar.gz.
    
  • 对比归档与文件差异
    tar -df archive.tar  # 列出归档内文件与磁盘的差异
    

📌 更多用法查看手册:man tartar --help



























tarTape Archive)是 Linux 和 Unix-like 系统中用于打包、压缩、解包和解压缩文件和目录的核心命令。虽然名字源于磁带备份,但现在广泛用于文件归档。

核心概念:

  1. 打包 (Archiving):将多个文件或目录组合成一个单一的文件.tar 文件)。这个过程本身不会压缩数据,只是将文件集合在一起。
  2. 压缩 (Compression):使用特定算法(如 gzip, bzip2, xz)减小打包文件的大小tar 通常与压缩工具结合使用来完成压缩。

tar 命令的强大之处在于它既能处理打包/解包,也能通过选项无缝调用压缩工具(如 gzip, bzip2, xz)。

基本语法

tar [选项] [归档文件名] [要归档的文件或目录...]

常用选项

tar 选项可以连在一起写(如 -cvf),顺序很重要,尤其是 -f 必须紧跟文件名。

  • 操作模式 (必须选一个):

    • -c, --create: 创建一个新的归档文件。
    • -x, --extract, --get: 解包解压缩一个归档文件。
    • -t, --list: 列出归档文件中的内容(不解包)。
    • -r, --append: 追加文件到已存在的归档文件末尾。
    • -u, --update: 更新归档文件(只添加比归档内同名文件新的文件)。
    • -A, --catenate, --concatenate: 合并多个 .tar 归档文件。
  • 压缩类型 (可选,创建或解压时指定):

    • -z, --gzip: 使用 gzip 压缩(.tar.gz.tgz)。
    • -j, --bzip2: 使用 bzip2 压缩(.tar.bz2.tbz2, .tbz)。
    • -J, --xz: 使用 xz 压缩(.tar.xz.txz)。压缩率通常最高,但速度慢。
    • -Z, --compress: 使用老式 compress 压缩(.tar.Z)。现在很少用。
    • --zstd: 使用 zstd 压缩(.tar.zst)。较新,压缩速度和效率平衡好。
  • 常用辅助选项:

    • -f, --file=ARCHIVE: 指定归档文件名这是最重要的选项之一,必须使用。后面紧跟文件名(如 -f mybackup.tar.gz)。
    • -v, --verbose: 详细模式。显示正在处理的文件列表。在创建、列出或解压时很有用。
    • -C, --directory=DIR: 改变解包/打包的目录。解压时:先切换到 DIR 再解压。打包时:相当于在 DIR 目录下执行打包。
    • -p, --preserve-permissions, --same-permissions: 解包时保留文件的原始权限和所有权(需要 root 权限才能完全恢复所有权)。
    • --exclude=PATTERN: 排除匹配 PATTERN 的文件或目录。可以使用通配符。
    • -P, --absolute-names: 保留绝对路径名。默认情况下 tar 会移除路径开头的 /(相对化路径),防止解压时覆盖系统关键文件。使用此选项会保留绝对路径(慎用!)。
    • -k, --keep-old-files: 解压时不覆盖已存在的文件。
    • --overwrite: 解压时覆盖已存在的文件(默认行为)。
    • --overwrite-dir: 解压时覆盖目录内容但保留目录本身(默认行为)。
    • --strip-components=NUMBER: 解压时移除路径开头的指定层级目录。例如,归档内文件路径是 home/user/docs/file.txt,使用 --strip-components=2 解压后路径变为 docs/file.txt
    • -h, --dereference: 打包时跟随符号链接(打包链接指向的实际文件,而不是链接本身)。
    • --hard-dereference: 打包时跟随硬链接(打包链接指向的实际文件)。
    • --checkpoint: 处理大归档时显示进度消息。

最常用组合示例

  1. 创建压缩包 (打包并压缩):

    • .tar.gz (gzip): tar -czvf backup.tar.gz /path/to/dir_or_file
      • -c: 创建
      • -z: 用 gzip 压缩
      • -v: 显示过程
      • -f: 指定文件名 backup.tar.gz
      • /path/to/dir_or_file: 要打包压缩的内容
    • .tar.bz2 (bzip2): tar -cjvf backup.tar.bz2 /path/to/dir_or_file
    • .tar.xz (xz): tar -cJvf backup.tar.xz /path/to/dir_or_file
    • .tar.zst (zstd): tar --zstd -cvf backup.tar.zst /path/to/dir_or_file (注意 --zstd 位置)
  2. 解压缩包 (解压并解包):

    • .tar.gz: tar -xzvf backup.tar.gz
      • -x: 解包
      • -z: 用 gzip 解压
      • -v: 显示过程
      • -f: 指定文件名 backup.tar.gz
    • .tar.bz2: tar -xjvf backup.tar.bz2
    • .tar.xz: tar -xJvf backup.tar.xz
    • .tar.zst: tar --zstd -xvf backup.tar.zst
    • 解压到指定目录: tar -xzvf backup.tar.gz -C /target/directory
  3. 查看压缩包内容 (不解压):

    • tar -tzvf backup.tar.gz (适用于 .tar.gz, .tar.bz2, .tar.xz, .tar.zst 等)
  4. 创建不压缩的打包文件 (仅打包):

    • tar -cvf files.tar file1.txt dir1/ dir2/
  5. 解包不压缩的打包文件:

    • tar -xvf files.tar
  6. 向现有.tar归档追加文件 (不压缩):

    • tar -rvf existing.tar newfile.txt
  7. 打包时排除特定文件/目录:

    • tar -czvf backup.tar.gz /home/user --exclude="*.tmp" --exclude="cache/"
  8. 解压时保留原始权限 (通常需要sudo恢复所有权):

    • sudo tar -xzvpf backup.tar.gz (-p 选项)

重要注意事项

  1. -f 选项是必须的且要紧跟文件名: tar -cvf myarchive.tar files/ 正确。tar -cv files/ -f myarchive.tar 正确。tar -cvf files/ myarchive.tar 错误!
  2. 路径问题:
    • 默认情况下,tar 在打包时会移除路径开头的 /(例如 /home/user 变成 home/user),这样解压时文件会放在当前目录下的相对路径中,更安全。
    • 使用 -P--absolute-names 会保留绝对路径,解压时可能覆盖系统文件,非常危险,请极度谨慎使用
    • 使用 -C 选项可以安全地指定解压目标目录。
  3. 权限和所有权:
    • 解压时,文件的权限(读/写/执行位)通常会被恢复。
    • 文件的所有者和用户组默认是执行解压操作的用户。要完全恢复原始所有者和用户组,需要使用 -p 选项并且root 用户 (sudo) 身份运行解压命令 (sudo tar -xzvpf backup.tar.gz)。
  4. 通配符: 在指定要打包的文件时可以使用通配符(如 *.txt),但要注意 Shell 会展开通配符。如果文件名包含特殊字符或空格,最好用引号括起来。
  5. 压缩算法选择:
    • gzip (-z, .gz): 速度最快,压缩率一般。最通用。
    • bzip2 (-j, .bz2): 压缩率比 gzip 好,速度比 gzip 慢,比 xz 快。资源消耗适中。
    • xz (-J, .xz): 压缩率通常最高(尤其对文本),速度最慢,内存消耗最高。适合追求最小文件大小且时间不敏感的场景。
    • zstd (--zstd, .zst): 压缩率和速度的绝佳平衡。压缩速度接近 gzip,解压速度极快,压缩率接近 xz。强烈推荐作为现代首选

总结

tar 是 Linux 文件管理的瑞士军刀。掌握 -c (创建), -x (解压), -t (查看), -v (详情), -f (文件名) 这几个核心选项以及 -z/-j/-J/--zstd 等压缩选项的组合,就能高效地处理绝大多数打包压缩任务。始终留意 -f 选项的位置和路径问题(使用 -C 是安全指定目标目录的好习惯),在需要完全恢复权限时记得结合 -psudo



























tar 是 Linux 中用于创建、查看和提取归档文件的核心命令(名称源于 Tape Archiver)。它本身不压缩文件,但常与压缩工具(如 gzip、bzip2、xz)结合使用。以下是关键用法详解:


     一、基础语法

tar [选项] [归档文件名] [文件/目录列表]

     二、核心功能与选项
         1. 创建归档文件

  • 基本创建(不压缩):
    tar -cvf archive.tar file1 dir1  # -c: 创建, -v: 显示过程, -f: 指定文件名
    
  • 创建+压缩(常用组合):
    tar -czvf archive.tar.gz dir1     # -z: 用gzip压缩 → .tar.gz 或 .tgz
    tar -cjvf archive.tar.bz2 dir1    # -j: 用bzip2压缩 → .tar.bz2
    tar -cJvf archive.tar.xz dir1     # -J: 用xz压缩 → .tar.xz
    

         2. 查看归档内容

tar -tvf archive.tar      # 列出内容(不提取)
tar -tzvf archive.tar.gz  # 查看压缩包内容

         3. 提取归档文件

  • 提取到当前目录
    tar -xvf archive.tar      # -x: 提取
    tar -xzvf archive.tar.gz  # 解压+提取
    
  • 提取到指定目录
    tar -xvf archive.tar -C /target/path  # -C: 指定目标目录
    

         4. 高级操作

  • 添加文件到已有归档
    tar -rvf archive.tar new_file.txt  # -r: 追加文件
    
  • 排除文件/目录
    tar -czvf backup.tar.gz --exclude='*.tmp' --exclude='logs/' /data
    
  • 保留文件权限(常用于系统备份):
    tar -cpzvf backup.tar.gz /etc  # -p: 保留权限
    

     三、常用压缩格式对比

选项 压缩工具 扩展名 压缩率 速度
-z gzip .tar.gz 中等
-j bzip2 .tar.bz2
-J xz .tar.xz 非常高 最慢
--zstd zstd .tar.zst 极快

💡 提示

  • 通用性优先选 gzip.tar.gz
  • 追求压缩率用 xz.tar.xz
  • 速度敏感场景用 zstd(需手动安装:tar -I zstd -cvf archive.tar.zst dir

     四、经典示例

  1. 备份/home目录(gzip压缩)

    tar -czvf home_backup_$(date +%F).tar.gz /home
    
  2. 解压到指定目录

    tar -xzvf software.tar.gz -C /opt
    
  3. 排除缓存文件并归档

    tar -cvf project.tar --exclude='node_modules' --exclude='.cache' ./project
    
  4. 查看压缩包内容

    tar -tzvf data.tar.bz2 | grep "important_file"
    

     五、注意事项

  1. 选项顺序-f 必须紧跟文件名(如 tar -cvf 正确,tar -vfc 错误)。
  2. 覆盖风险:解压时默认覆盖同名文件!使用 --keep-old-files 可避免。
  3. 权限问题:解压系统文件时用 sudo 保留权限(如 sudo tar -xpzvf backup.tar.gz -C /)。

掌握 tar 能高效管理文件归档,是 Linux 运维和开发的必备技能!



























Linux tar 命令详解:终极归档与压缩指南

tar (Tape ARchiver) 是 Linux 系统中最核心的文件归档工具,掌握其高级用法是每个系统管理员的必备技能。本文将深入解析其工作原理、参数组合及企业级应用场景。


一、核心功能解析

     1. 基础概念区分

操作类型 工具 文件扩展名 特点
归档 tar .tar 多文件合并为单文件
压缩 gzip .tar.gz 高压缩速度
bzip2 .tar.bz2 高压缩率
xz .tar.xz 极高压缩率
加密 gpg .tar.gpg AES-256 加密保护

     2. 工作流程

源文件
tar 归档
压缩算法
gzip
bzip2
xz
无压缩
.tar.gz
.tar.bz2
.tar.xz
.tar

二、参数详解:关键选项分类

     1. 操作模式(必选其一)

参数 全称 作用
-c --create 创建新归档
-x --extract 解压归档
-t --list 查看归档内容
-r --append 追加文件到归档
-u --update 更新归档中的文件
-d --diff 比较归档与文件系统差异

     2. 压缩类型(按需选择)

参数 对应压缩工具 适用场景
-z gzip 快速压缩 (Web资源)
-j bzip2 高压缩率 (文本日志)
-J xz 极致压缩 (软件分发)
--zstd zstd 现代平衡 (Docker镜像)

     3. 文件处理(精细控制)

参数 作用
-v 显示处理文件详情 (verbose)
-f FILE 指定归档文件名 (必须参数)
-C DIR 切换工作目录
--exclude=PAT 排除匹配文件/目录
--wildcards 启用通配符匹配
-h 跟随符号链接 (默认不跟随)
-p 保留权限属性 (root用户默认)

     4. 高级功能

# 多卷归档(分卷压缩)
tar -cvzf - /data | split -b 2G - data_part.tar.gz.

# 增量备份(结合快照)
tar -g snapshot.snar -czvf inc_backup.tar.gz /data

# 加密归档
tar -czvf - secret_data | gpg -c > archive.tar.gz.gpg

三、企业级应用案例

     1. 日志归档(保留权限)

# 打包/var/log并保留权限
tar -cpzvf logs-$(date +%F).tar.gz -C /var/log .

# 排除特定日志类型
tar -czvf logs.tar.gz --exclude='*.tmp' /var/log

     2. 数据库热备份(流式处理)

# MySQL 全库备份
mysqldump -u root -p --all-databases | tar -czvf db_backup-$(date +%s).tar.gz -

     3. 差异备份系统配置

# 创建基础备份
tar -g /backup/base.snar -cpzvf /backup/base.tar.gz /etc

# 每日增量备份
tar -g /backup/base.snar -cpzvf /backup/inc-$(date +%F).tar.gz /etc

     4. 跨网络传输加密

# 加密传输整个目录
tar -czvf - /sensitive_data | openssl enc -aes-256-cbc -pbkdf2 | nc 10.0.0.2 8080

# 接收端解密
nc -l 8080 | openssl enc -d -aes-256-cbc -pbkdf2 | tar -xzvf -

四、性能优化指南

     1. 压缩算法对比

算法 压缩比 压缩速度 解压速度 内存占用
gzip ★★★★ ★★★★★
bzip2 ★★ ★★★
xz 极高 ★★
zstd ★★★★ ★★★★★

     2. 多核加速技巧

# 使用pigz替代gzip (多线程)
tar -cvf - /big_data | pigz -9 -p 8 > archive.tar.gz

# 使用pbzip2
tar -cvf - /data | pbzip2 -p4 > archive.tar.bz2

     3. 最佳实践组合

# 推荐组合1:速度优先
tar -cpf - /data | pigz -1 -p 8 > data_fast.tar.gz

# 推荐组合2:压缩率优先
tar -cpf - /critical_data | xz -T0 -9 > data_compress.xz

五、高级技巧与陷阱规避

     1. 安全操作技巧

# 防止解压路径遍历攻击
tar -xzvf user_upload.tar.gz --transform 's/^\.\///' -C /safe_dir

# 校验归档完整性
tar -tf archive.tar.gz > /dev/null && echo "Archive OK"

     2. 时间戳处理

# 保留mtime精确到纳秒
tar --format=posix -cvf archive.tar ...

# 修改解压后文件时间戳
tar -xzvf archive.tar.gz --touch

     3. 常见错误解决

错误: "tar: 从成员名中删除开头的'/'"
解决: 使用相对路径或 -P 参数保留绝对路径

错误: "tar: 归档异常终止"
解决: 检查磁盘空间 dd if=/dev/zero of=./test.img bs=1G count=10

错误: "gzip: stdin: invalid compressed data"
解决: 使用 dd if=broken.tar.gz bs=8K skip=1 | tar xzvf -

六、与其它工具集成

     1. 结合 find 增量归档

# 归档7天内修改的文件
find /data -type f -mtime -7 -print0 | tar -czvf weekly_update.tar.gz --null -T -

     2. 使用 rsync 恢复部分文件

# 从归档中恢复特定目录
tar -xzvf backup.tar.gz -C /tmp etc/nginx
rsync -av /tmp/etc/nginx /etc/

     3. 创建可自解压归档

# 生成自解压脚本
echo '#!/bin/sh' > installer.sh
echo 'tail -n +4 $0 | tar -xzvf -' >> installer.sh
tar -czvf - app_files >> installer.sh
chmod +x installer.sh

七、企业环境最佳实践

     1. 备份策略矩阵

数据类型 压缩算法 保留策略 示例命令
日志文件 gzip -3 保留30天 tar -czvf logs-$(date +%F).tar.gz /var/log
数据库备份 zstd 保留7天+异地 mysqldump …
配置文件 xz 永久保留 tar -cJvf config-(hostname)−(hostname)-(hostname)(date +%s).tar.xz /etc
媒体文件 不压缩 按需保留 tar -cvf media.tar /media

     2. 自动化备份脚本

#!/bin/bash
# 企业级备份脚本
BACKUP_DIR="/backup"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)

tar -g $BACKUP_DIR/base.snar \
    --exclude='/var/cache' \
    --exclude='/tmp' \
    -cpzvf $BACKUP_DIR/full_$TIMESTAMP.tar.gz \
    /etc /var /home

# 清理30天前备份
find $BACKUP_DIR -name '*.tar.gz' -mtime +30 -delete

     3. 云存储集成

# 加密上传到AWS S3
tar -czvf - /data | openssl enc -aes-256-cbc | aws s3 cp - s3://bucket/data.tar.enc

# 从Azure下载解密
az storage blob download --container backups --name data.tar.enc | \
  openssl enc -d -aes-256-cbc | tar -xzvf -

八、总结:核心命令速查

     1. 归档/压缩操作

# 标准压缩
tar -czvf archive.tar.gz /path/to/dir

# 最大压缩
tar -cJvf archive.tar.xz /path/to/dir

# 多线程压缩
tar -cvf - /data | pigz -p 8 > data.tar.gz

     2. 解压操作

# 自动识别压缩格式
tar -xavf archive.tar.xz -C /target/dir

# 解压特定文件
tar -xzvf backup.tar.gz etc/nginx/nginx.conf

     3. 查看内容

# 列出详细内容
tar -tvf archive.tar.bz2

# 搜索归档内文件
tar -tf logs.tar.gz | grep 'error'

大师建议
• 生产环境优先使用 zstd 平衡速度与压缩率
• 关键备份启用 -g 增量模式节省空间
• 网络传输务必加密管道 (openssl/gpg)
• 定期执行 tar -W 验证归档完整性



























tar 是 Linux 系统中用于归档和压缩文件的核心工具,名称源于 Tape Archive(磁带存档)。它可将多个文件/目录合并为单个归档文件(.tar),并可选择使用不同算法压缩。以下是深度详解:


     一、核心功能

操作 命令选项 说明
创建归档 -c / --create 打包文件/目录到 .tar 文件
提取归档 -x / --extract 从归档中解压文件
查看内容 -t / --list 列出归档内文件(不解压)
追加文件 -r / --append 向已存在的归档追加文件
更新文件 -u / --update 仅追加比归档内更新的文件

     二、关键选项详解
         1. 基础选项

选项 说明
-f FILE 指定归档文件名(必须选项,例如 -f backup.tar
-v 显示详细处理过程(Verbose 模式)
-p 保留文件权限和属性(解压时常用)
-C DIR 解压/打包前切换到目标目录(如 -C /opt

         2. 压缩选项

选项 压缩格式 后缀名 特点
-z / --gzip gzip .tar.gz / .tgz 速度快,通用性强
-j / --bzip2 bzip2 .tar.bz2 压缩率高,速度较慢
-J / --xz xz .tar.xz 最高压缩率,速度最慢
--zstd zstd .tar.zst 速度与压缩率平衡(推荐新系统使用)
-a / --auto-compress 自动检测 - 根据文件后缀自动选择压缩算法

💡 压缩率对比xz > bzip2 > gzip > zstd(但 zstd 解压/压缩速度最快)

         3. 文件筛选

选项 说明
--exclude="PATTERN" 排除匹配模式的文件(如 --exclude="*.log"
-X FILE / --exclude-from=FILE 从文件中读取排除规则
--wildcards 允许使用通配符(如提取时 tar -xvf backup.tar --wildcards '*.txt'

         4. 解压控制

选项 说明
-k / --keep-old-files 不覆盖现有文件(默认会覆盖)
--overwrite 强制覆盖文件
--strip-components=N 解压时去除路径前 N 级目录(如 --strip-components=1 跳过根目录)

     三、常用命令示例
         1. 基础操作

# 打包目录(不压缩)
tar -cvf backup.tar /path/to/dir

# 打包并用 gzip 压缩
tar -czvf backup.tar.gz /path/to/dir

# 查看归档内容
tar -tvf backup.tar.gz

# 解压到当前目录
tar -xvf backup.tar.gz

# 解压到指定目录
tar -xvf backup.tar.gz -C /target/dir

         2. 高级用法

# 排除文件并压缩
tar -czvf backup.tar.gz --exclude="*.tmp" --exclude="cache/" /path/to/dir

# 仅更新比归档内更新的文件
tar -uvf backup.tar /path/to/updated_files

# 从归档提取单个文件
tar -xvf backup.tar path/to/specific_file.txt

# 增量备份(需结合 -g 快照文件)
tar -g snapshot.snar -czvf incremental.tar.gz /data

     四、使用技巧与注意事项

  1. 路径问题

    • 避免用绝对路径打包:tar -czvf backup.tar ./dir(解压后路径为 ./dir/*
    • 使用绝对路径需加 -P 选项(可能覆盖系统文件,慎用!)
  2. 压缩格式选择

    • 快速压缩/解压:gzip.tar.gz
    • 高压缩率:xz.tar.xz)或 zstd.tar.zst
    • 通用兼容:gzip
  3. 权限保留
    解压系统文件时用 -p 保留权限:

    sudo tar -xvpzf system_backup.tar.gz -C /
    
  4. 处理特殊文件

    • 打包符号链接:默认保存链接本身,加 -h 保存实际文件
    • 保留 SELinux 上下文:加 --selinux / --xattrs
  5. 分卷压缩
    分割大文件为多卷(每卷 100MB):

    tar -cvzM --tape-length=100M -f backup_vol.tar.gz /large_dir
    

     五、常见问题解决

  • 报错:tar: Removing leading '/' from member names
    安全机制自动移除绝对路径前的 /,解压后路径变为相对路径。需保留绝对路径时加 -P

  • 解压后文件权限错误
    使用 -p 选项保留权限,或手动用 chmod/chown 修复。

  • 追加文件到压缩包
    需先解压为 .tar,追加后再重新压缩:

    gzip -d backup.tar.gz         # 解压为 .tar
    tar -rvf backup.tar new_file  # 追加文件
    gzip backup.tar               # 重新压缩
    

     六、扩展知识

  • 查看压缩算法file backup.tar.gz(显示压缩类型)
  • 并行压缩
    pigz(替代 gzip)或 pbzip2(替代 bzip2)加速:
    tar -cvf - /data | pigz > backup.tar.gz
    
  • 归档验证
    创建后校验完整性:
    tar -Wvf backup.tar.gz
    

掌握 tar 可高效管理备份、迁移数据。建议通过 tar --helpman tar 探索更多功能。




























网站公告

今日签到

点亮在社区的每一天
去签到