Daftar argumen terlalu panjang bukanlah kesalahan khusus tar
. Ini adalah kesalahan ( E2BIG
) dari syscall exec (2) (diberikan oleh kernel, yang harus meletakkan beberapa batasan execve
untuk menghindari kerusakan memori). Jadi shell Anda (yang fork
kemudian execve
-s /bin/tar
program) memberitahu Anda pesan kesalahan itu.
Mungkin sulit untuk meningkatkan batas itu (mungkin beberapa sysconf
, saya lupa detailnya). Atau mengkompilasi ulang kernel Anda dan meningkatkan ARG_MAX
di nya include/uapi/linux/limits.h
.
GNU tar (1) menerima banyak opsi menarik (jadi silakan baca halaman manual), khususnya:
-T, --files-from = FILE
Get names to extract or create from FILE.
Jadi kumpulkan jalur file yang akan diarsipkan dalam beberapa file (misalnya sementara), lalu sampaikan dengan -T
dan Anda tidak akan mendapatkan batasan.
Namun, tar
perintah tersebut memiliki banyak fitur menarik, dan Anda dapat menggunakannya untuk memiliki perintah berukuran wajar.
Lihat juga temukan (1) dan xargs (1) . Pertimbangkan juga dar atau afio (sebagai altenatif tar
) atau rsync
Anda mungkin menggunakan GNU cp (1) sebagaicp -va sourcedir destdir