Linux 命令速查
压缩备份 man pax

pax

POSIX 标准的归档工具,可读写 tar、cpio、pax 等格式。

返回

补充说明

pax 由 POSIX 定义,用来取代早期互不兼容的 tar 与 cpio:读取时能自动识别归档格式,写入时可指定 ustar、posix、cpio、gnutar 等格式。它支持长文件名、超过 8GB 的大文件和更精确的时间戳,是跨平台归档脚本的可移植选择。

Linux 上 pax 通常需要单独安装(Debian/Ubuntu 的 pax 包,RHEL 系在 pax 或 spax 包中),并非默认自带。日常打包仍以 tar 更常见;只有在需要严格 POSIX 行为,或在 BSD、Solaris、AIX 之间迁移时才值得使用。

pax 的一大特色是“复制模式”:同时给出 -r 和 -w,可以把目录树直接复制到另一个位置,并保留权限、时间戳和属主,相当于可移植的 cp -a。压缩则依赖外部程序,GNU pax 的 -z、-j 分别调用 gzip 和 bzip2。

语法

pax -w [选项] [-f 归档文件] [文件...]   # 写入
pax -r [选项] [-f 归档文件] [模式...]   # 读取/解包
pax -r -w [选项] 源... 目标目录          # 复制

选项

  • -f file:指定归档文件,- 表示标准输入或标准输出
  • -v:列出正在处理的文件名
  • -x format:指定格式,如 ustar、posix、gnutar、cpio
  • -z / -j:使用 gzip / bzip2 压缩(GNU pax)
  • -p preserve:复制时保留权限、属主和时间戳,e 表示全部保留
  • -d:读取时不覆盖已存在的较新文件
  • -0:以 NUL 分隔文件名,配合 find -print0
  • -T:从文件读取要处理的路径列表

实例

# 打包目录为 POSIX 格式归档
pax -w -x posix -f backup.tar ./project

# 列出归档内容(既不加 -r 也不加 -w)
pax -f backup.tar -v

# 解包到当前目录,不覆盖更新的文件
pax -r -d -f backup.tar

# 先进入目标目录再解包,避免路径逃逸
mkdir -p /tmp/restore && cd /tmp/restore && pax -r -f /path/backup.tar

# 类似 cp -a 的目录复制
pax -r -w -p e ./src ./dst

# 只解出匹配的文件
pax -r -f backup.tar '*.conf'

# 与 find 配合处理含空格的文件名
find . -name '*.log' -print0 | pax -0 -w -f logs.tar

参考链接