我需要在 tar 存档中存储大量文件(> 100,000),但遇到了错误:/bin/sh: /bin/tar: 无法执行 [参数列表太长]。
UNIX Solaris tar 或 GNU tar 有限制吗?或者,这是 ZFS 问题吗?我正在运行带有 ZFS 的 Solaris 11.3。
答案1
这不是 tar 的限制。您超出了可以传递给程序的参数的最大大小。如果文件名列表在文件中可用,那么您可以使用 GNU tar 的-T
选项:
tar -c -f output.tar -T filelist.txt
-
Tar 还可以通过使用作为文件名从标准输入接收文件列表。例如,如果要创建包含 的所有文件和子目录的存档mydir
,可以将 的输出传递find
给 tar:
find mydir | tar -c -f output.tar -T -
答案2
正如其他人所说,问题(可能)是命令的长度,而不是存档的大小。你应该能够做到
焦油CF压缩包文件文件001 文件002 … 文件100 塔尔乌夫压缩包文件文件 101 文件 102 … 文件 200 塔尔乌夫压缩包文件文件201 文件202 … 文件300 ︙或者,做
焦油CF压缩包文件文件001创建存档,然后
焦油CF压缩包文件 文件002 … 文件100 塔尔乌夫压缩包文件文件 101 文件 102 … 文件 200 塔尔乌夫压缩包文件文件201 文件202 … 文件300 ︙(可能与
xargs
) 添加到它。