如何按字母顺序创建 tar 文件?

Eri*_*son 25 tar

我想创建一个 tar 文件,其中所有目录和文件都按字母顺序处理。这是针对正在压缩的整个目录层次结构,因此它将首先按字母顺序处理第一个目录,然后按字母顺序处理其中的子目录,等等。我翻阅了手册页,找不到此开关。

我承认,这一半是新奇,一半是轻微优化。我简直不敢相信没有简单的方法可以做到这一点。我肯定错过了什么。

Cha*_*ron 14

Slartibartfast 走在正确的轨道上,但 tar 的默认行为是进入目录,因此您可能会在生成的 tar 文件中获得多个相同文件的副本。您可以通过执行检查 tar tf file.tar | sort 解决方法是在 tar 中包含 --no-recursion 选项。此外,您应该能够通过使用 -print0 find--null选项然后使用tar选项来发送奇怪的文件名。最终结果如下所示:

find paths -print0 | sort -z | tar cf tarfile.tar --no-recursion --null -T -

您可以使用 .tar 文件检查 tar 文件中的顺序tar tsf tarfile.tar。尽管您可能永远不需要 -print0、-z 和 --null 选项,除非您知道将遇到一个嵌入了换行符的文件名,但我从未尝试过。


Kev*_*nko 5

tar 文件中文件的顺序并不重要,因为在提取文件时,文件系统无论如何都不会保留顺序。

这没有开关,但如果你真的想要它,你可以提供 tar 和一个按排序顺序的文件名列表,它会按照你给它的顺序创建 tar 文件。

% tar cf tarfile tmp/diff.txt src/hellow.c junkimage.IMG barry/thegroup
% tar tf tarfile
tmp/diff.txt
src/hellow.c
junkimage.IMG
barry/thegroup
Run Code Online (Sandbox Code Playgroud)

  • 如果您需要在下载时解压和显示,tar 文件中文件的顺序很重要。 (4认同)
  • 或者只是对输出进行排序:`tar tf tarfile | 排序` (2认同)