posix - 为什么GNU tar --format=pax 会生成ustar 档案?
问题描述
我正在使用 GNU tar
(v1.29) 创建一个存档并xxd
像这样检查它:
(
cd "$(mktemp -d)"
touch -d@0 1.txt 2.txt 3.txt
tar \
--format=pax \
--numeric-owner \
--owner=0 \
--group=0 \
--pax-option="exthdr.name=%d/PaxHeaders.0/%f,delete=atime,delete=ctime" \
--mtime=@0 \
-cf ../123.tar \
1.txt 2.txt 3.txt
xxd ../123.tar | grep -C1 ustar
rm -rf $PWD
)
这给了我这个:
000000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000100: 0075 7374 6172 0030 3000 0000 0000 0000 .ustar.00.......
00000110: 0000 0000 0000 0000 0000 0000 0000 0000 ................
--
000002f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000300: 0075 7374 6172 0030 3000 0000 0000 0000 .ustar.00.......
00000310: 0000 0000 0000 0000 0000 0000 0000 0000 ................
--
000004f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................
00000500: 0075 7374 6172 0030 3000 0000 0000 0000 .ustar.00.......
00000510: 0000 0000 0000 0000 0000 0000 0000 0000 ................
为什么会在其中tar --format=pax
生成一个存档ustar
?
解决方案
以 -x pax 格式生成的 pax 归档磁带或文件应包含一系列块。档案的物理布局应与ustar 交换格式中描述的ustar 格式相同。
"ustar" 后跟 1 个零/NUL 字节是magic
指示存档类型的字段的值:
该
magic
字段是该存档以该存档格式输出的规范。如果此字段包含ustar(来自 ISO/IEC 646:1991 标准 IRV 的五个字符,后跟 NUL),……</p>
当然,这仅适用于任何符合标准的pax
实用程序,但我希望pax
GNU 创建的格式档案tar
能够以与符合标准的实现相同的方式创建档案pax
。
推荐阅读
- react-native - 反应原生如何在文本总和后显示 2 个小数
- node.js - 获取请求适用于邮递员,但适用于浏览器
- node.js - 当主服务器关闭时,MongoDB NodeJS 客户端与副本集的连接不会重新连接
- node.js - 如何使用分子独立运行 docker 图像而不是使用“组合”?
- r - 在小鼠中进行后处理,用另一个变量替换一个变量
- html - 如何将关闭图标添加到 bootstrap 5 移动菜单?
- sql - 在上一行内的相同计算值上创建计算值
- mongoose - 尝试在 NestJS 项目中使用 Mongoose 时不断收到相同的错误
- python - Python十进制数
- wordpress - 从 URL 中删除/隐藏子目录