Tôi quan sát hành vi sau với cả tar 1.26 và 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
Vì vậy, những gì tôi đang cố gắng làm ở đây là trích xuất một tập tin tar vào cấu trúc thư mục hiện có, nơi tôi không phải là chủ sở hữu của tất cả các thư mục có liên quan nhưng tôi có quyền ghi vào tất cả chúng. Trong thực tế, chúng được chia sẻ giữa một nhóm.
Tôi không quan tâm đến dấu thời gian và tôi tin rằng các quyền đã được chính xác. Tôi đang chạy nó như một người dùng bình thường vì vậy nó không nên cố gắng --preserve-permissions
trừ khi được nói như vậy, điều mà tôi đã không làm. Điều thực sự làm tôi lo lắng là trạng thái thoát: Tôi dự định sử dụng điều này trong một tập lệnh và muốn biết liệu trích xuất thực tế có hoạt động tốt hay không.
Có một tùy chọn để tar bảo nó không đặt quyền thư mục, không ngay lập tức cũng không bị trì hoãn? Không có điều đó, những giải pháp khác bạn sẽ đề nghị. Ngay bây giờ tôi đang suy nghĩ về việc trích xuất vào một thư mục tạm thời và sử dụng rsync
để di chuyển công cụ vào cây hiện có. Nhưng có lẽ bạn biết một cách tiếp cận ít hackish hơn.