我想创建一个 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 选项,除非您知道将遇到一个嵌入了换行符的文件名,但我从未尝试过。
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)