2013-06-24 39 views
16

Tôi hiện đang viết tập lệnh sao lưu tự động cho các máy chủ của chúng tôi. tôi đang sử dụng lệnh tar tar trong kịch bản để lưu trữ các kho mã.cách giữ quyền sở hữu tệp trong khi sử dụng tar

trong kịch bản PERL của tôi đang sử dụng lệnh tar như sau:

system("tar -jcpf $destPath/$string.tar.bz2 -X $exclusionFile $targetPath"); 

tôi muốn giữ lại quyền sở hữu tập tin khi trích xuất các kho lưu trữ tar. tôi đã cố gắng liệt kê nội dung lưu trữ tar với

tar -jtvf 

và danh sách chứa quyền sở hữu tệp chính xác cho mỗi tệp, nhưng khi giải nén lưu trữ, quyền sở hữu tệp sẽ thay đổi đối với người dùng hiện tại.

có cách nào để trích xuất bản lưu trữ tar và giữ nguyên quyền sở hữu tệp gốc cho mỗi tệp không?

+2

Tôi sẽ thêm nhanh: Không thực hiện lệnh 'system' khi bạn có thể thực hiện trong Perl tinh khiết. Xem [Archive :: Tar] (http://perldoc.perl.org/Archive/Tar.html). Đó là một phần của gói Perl tiêu chuẩn trong một thời gian dài. Nó sẽ hoạt động trong nhiều hệ điều hành khác nhau và giúp bạn kiểm soát tốt hơn tarball của mình. –

Trả lời

12

Cung cấp tùy chọn --same-owner để tar trong khi giải nén.

tar --help nói:

--same-owner 
      create extracted files with the same ownership 
+0

tôi đã cố gắng để giải nén kho lưu trữ tar: tar --same sở hữu -jxvf naveExample2.tbz2 trong khi chiết xuất tar và nhận được các lỗi sau đây: tar: sao lưu/superlinksnpTest.txt: Không thể thay đổi quyền sở hữu cho UID 50.537 , gid 50538: Thao tác không được phép tar: Thoát với trạng thái lỗi do các lỗi trước Tôi có làm sai không? – DontCareBear

+1

Bạn phải là 'root' để kích hoạt' tar' để thay đổi UID/GID của nội dung của kho lưu trữ. – JRFerguson

+1

Không phải tất cả việc thực hiện 'tar' đều bao gồm tham số' --same-owner', hoặc thậm chí có cờ '--help'. Luôn luôn làm 'man tar' để xem những thông số tùy chọn mà phiên bản' tar' của bạn có. –

5

Bạn muốn "bảo tồn" thuộc tính tệp khi làm tar -x với -p switch. Rõ ràng bạn cần phải được root cho điều này để có được kết quả mong muốn.

  -p, --insecure, --preserve-permissions 
     (x mode only) Preserve file permissions. Attempt to restore the 
     full permissions, including owner, file modes, file flags and 
     ACLs, if available, 

Nhiều hệ thống POSIX cũng xuất xưởng pax, cpio có thể làm việc như thay thế cho tar.