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 - tar
ketika 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.
*
Jawaban:
Daftar argumen terlalu panjang bukanlah kesalahan khusus
tar
. Ini adalah kesalahan (E2BIG
) dari syscall exec (2) (diberikan oleh kernel, yang harus meletakkan beberapa batasanexecve
untuk menghindari kerusakan memori). Jadi shell Anda (yangfork
kemudianexecve
-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 meningkatkanARG_MAX
di nyainclude/uapi/linux/limits.h
.GNU tar (1) menerima banyak opsi menarik (jadi silakan baca halaman manual), khususnya:
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 rsyncAnda mungkin menggunakan GNU cp (1) sebagai
cp -va sourcedir destdir
sumber
tar
.