
多数のファイル (> 100,000) を tar アーカイブに保存する必要があり、次のエラーが発生しました:/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
他の人が言っているように、問題は(おそらく)コマンドの長さであり、アーカイブのサイズではありません。次のようにすればいいでしょう。
タールCFtarファイルファイル001 ファイル002 … ファイル100 タールUFtarファイルファイル101 ファイル102 … ファイル200 タールUFtarファイルファイル201 ファイル202 … ファイル300 ︙あるいは、
タールCFtarファイルファイル001アーカイブを作成し、
タールCFtarファイル ファイル002 … ファイル100 タールUFtarファイルファイル101 ファイル102 … ファイル200 タールUFtarファイルファイル201 ファイル202 … ファイル300 ︙(おそらく
xargs
) を追加してください。