
我需要在 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
) 添加到它。