Apakah ada batasan jumlah nama file yang dapat kita berikan tar

3

Saya membuat tar dan membukanya di lokasi lain menggunakan:

$ tar -C sourcedir -cf - . | tar -C targetdir -xpf -

tetapi gagal seperti ini
Kesalahan yang saya dapatkan adalah:, Argument list too long - tarketika saya mengurangi jumlah file yang saya maksud melakukannya dalam kumpulan file (seperti 1000 file sekaligus) itu berfungsi.
Hal lain yang saya perhatikan:
jika nama file lebih pendek dari itu berfungsi dengan baik.

Saya tidak yakin apa sebenarnya yang membatasi ini? tolong beri saran.

ritzz.soni
sumber
Tampak lebih seperti unix daripada pertanyaan pemrograman. Tolong juga selalu berikan pesan kesalahan lengkap yang Anda dapatkan.
Axel
Apakah Anda yakin Anda menggunakan perintah yang tepat dan mendapatkan pesan yang tepat? Terlihat aneh.
Basile Starynkevitch
Dugaan saya adalah bahwa titik pertama sebenarnya adalah*
Basile Starynkevitch

Jawaban:

6

Daftar argumen terlalu panjang bukanlah kesalahan khusus tar. Ini adalah kesalahan ( E2BIG) dari syscall exec (2) (diberikan oleh kernel, yang harus meletakkan beberapa batasan execveuntuk menghindari kerusakan memori). Jadi shell Anda (yang forkkemudian execve-s /bin/tarprogram) 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_MAXdi 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 -Tdan Anda tidak akan mendapatkan batasan.

Namun, tarperintah 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

Basile Starynkevitch
sumber
adakah cara kita dapat meningkatkan batas untuk daftar argumen?
2
Jangan lakukan itu. Belajarlah untuk menggunakan dengan lebih bijak tar.
Basile Starynkevitch
yakin terima kasih .. apakah opsi files-from dan -T ini juga memiliki batasan?
1
Tentunya dibatasi oleh sumber daya yang tersedia. Tidak ada yang tak terbatas di alam semesta ini (kecuali, dan kami tidak yakin, alam semesta itu sendiri).
Basile Starynkevitch
Selain itu, bahkan di alam semesta tanpa batas, Anda tidak bisa melihat semuanya. Beberapa kita selalu memiliki keterbatasan.
Basile Starynkevitch