Saya mengamati perilaku berikut dengan tar 1.26 dan 1.27.1:
$ mkdir a b a/diffowner
$ sudo mkdir b/diffowner
$ sudo chmod a+w b/diffowner
$ echo foo > a/diffowner/foo
$ tar -C a -cvf test.tar diffowner
diffowner/
diffowner/foo
$ tar -C b -xvf test.tar diffowner
diffowner/
diffowner/foo
tar: diffowner: Cannot utime: Operation not permitted
tar: diffowner: Cannot change mode to rwxr-xr-x: Operation not permitted
tar: Exiting with failure status due to previous errors
Jadi apa yang saya coba lakukan di sini adalah mengekstraksi file tar ke dalam struktur direktori yang sudah ada, di mana saya bukan pemilik semua direktori yang terlibat, tetapi saya memiliki izin tertulis untuk semuanya. Bahkan mereka dibagi di antara kelompok.
Saya tidak peduli dengan cap waktu, dan saya percaya bahwa izin harus sudah benar. Saya menjalankan ini sebagai pengguna biasa sehingga tidak boleh mencoba --preserve-permissions
kecuali diberitahu begitu, yang saya tidak lakukan. Yang benar-benar mengkhawatirkan saya adalah status keluar: Saya bermaksud menggunakan ini dalam skrip, dan ingin tahu apakah ekstraksi yang sebenarnya berfungsi dengan baik.
Apakah ada opsi untuk tar yang memberitahukannya untuk tidak mengatur izin direktori, baik segera maupun ditunda? Gagal itu, apa solusi lain yang akan Anda sarankan. Saat ini saya sedang berpikir tentang mengekstraksi ke direktori sementara dan menggunakan rsync
untuk memindahkan barang ke pohon yang ada. Tapi mungkin Anda tahu pendekatan yang kurang hackish.