Tôi có thể trích xuất một thư mục cụ thể bằng tar sang thư mục khác không?


14

Tôi mới tham gia vào thế giới của Linux và dường như đã gặp phải một vấp ngã. Tôi biết tôi có thể trích xuất một kho lưu trữ specifc sử dụng lệnh tar xvfz archivename.tar.gz sampledir/tuy nhiên làm thế nào tôi có thể trích xuất sampledir/để testdir/chứ không phải là con đường mà các kho lưu trữ trong các kho lưu trữ egcurrently là trong đường dẫn /tmp/archivename.tar.gzvà tôi muốn trích xuất sampledirđể testdirmà là ở con đường /tmp/testdir.

Câu trả lời:


19

Những gì bạn đang tìm kiếm là -Ctùy chọn:

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

Cách sử dụng, theo ví dụ của bạn:

$ tar xvzf archivename.tar.gz -C /tmp/testdir/ sampledir/

Ngoài ra, bạn có thể muốn biết rằng các phiên bản hiện đại của tarkhông yêu cầu zcờ giải nén các tệp được nén; họ sẽ nhận thấy đó là một .gzvà làm điều đúng tự động.


Cảm ơn. Vui thay tôi đã thử điều đó trước khi đăng câu hỏi và nó đã thất bại. Có lẽ tôi đã bỏ lỡ một lựa chọn. Tôi sẽ thử lại lần nữa.
PeanutsMonkey

Sáng chói. Tôi luôn quên điều này cho các tài liệu lưu trữ lớn.
zmonteca

3

Bạn không cần phải chơi những trò chơi điên rồ với mọi thứ. Tar hoàn toàn chỉ hỗ trợ trích xuất một tập hợp con các tệp trong kho lưu trữ, như trong ví dụ (tầm thường) sau:

/tmp $ mkdir tarsrc
/tmp $ cd tarsrc
/tmp/tarsrc $ mkdir a b
/tmp/tarsrc $ touch a/aaa b/bbb
/tmp/tarsrc $ tar cf ../tartest.tar .
/tmp/tarsrc $ cd ..
/tmp $ mkdir tardest
/tmp $ cd tardest
/tmp/tardest $ tar xf ../tartest.tar ./a    
/tmp/tardest $ ls -R
.:
a/

./a:
aaa

Thủ thuật là pathspec phải khớp chính xác với nội dung của tarfile. Vì vậy, khi bạn làm một tar tf, nếu đường dẫn bắt đầu ./, bạn phải đặt nó vào, và nếu nó không có nó, bạn phải loại bỏ nó. Ngoài ra, nếu bạn muốn trích xuất một đường dẫn phụ con phụ con, nó sẽ kết thúc cấp độ N sâu trong hệ thống tập tin khi bạn hoàn thành.


Cảm ơn womble. Có thể đó không phải là ví dụ phù hợp để sử dụng nhưng tôi đang so sánh tar với Winzip, WinRAR, v.v. áp dụng quy trình tương tự, ví dụ: chọn tệp bạn muốn hủy lưu trữ (tar thực hiện điều này) và chọn đường dẫn bạn muốn trích xuất (tar không làm điều này trừ khi tôi đang ở trong thư mục cụ thể).
PeanutsMonkey

Bạn muốn -Ctùy chọn để tar, sau đó.
womble
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.