tar: Cách tạo một tệp tar với các thư mục hàng đầu tùy ý w / o 'cd'ing đến thư mục cha


23

Nói rằng tôi có một thư mục các tập tin tại

/home/user1/dir1

và tôi muốn tạo một tar chỉ với "dir1" là thư mục hàng đầu:

/dir1/file1
/dir1/file2

Tôi biết tôi có thể cd đầu tiên vào thư mục

cd /home/user1/
tar czvf dir1.tar.gz dir1

Nhưng khi viết kịch bản, việc chuyển từ thư mục này sang thư mục khác không phải lúc nào cũng thuận lợi. Tôi tự hỏi có cách nào để làm điều đó với các đường dẫn tuyệt đối mà không thay đổi các thư mục hiện tại không?

Tôi biết tôi luôn có thể tạo một tệp tar với đường dẫn tuyệt đối bên trong và sử dụng

--strip-components 

khi trích xuất nhưng đôi khi tên đường dẫn thêm là thông tin riêng tư bổ sung mà bạn không muốn phân phối với các tệp tar của mình.

Cảm ơn!

Câu trả lời:


24

tar -C thay đổi thư mục

tar -C /home/user1/ -cvzf dir1.tar.gz dir1

btw, tiện dụng để theo dõi thay đổi thư mục ... sử dụng Pushd và popd.

pushd .
cd /home/user1
tar cvfz dir1.tar.gz
popd

1
Cảm ơn. Tôi không biết rằng tùy chọn "-C" phải được sử dụng trước các tùy chọn khác ... Tôi đã thử "tar -cvzf dir1.tar.gz dir1 -C / home / user1 /" nhưng nó không hoạt động.
Yan

1
Không hoạt động: tar: dir: Không thể stat: Không có tệp hoặc thư mục như vậy (giả sử dir1 ở dưới / home / user1 /)
Tribbloid 25/03/18

21

Với gnu tar, bạn có thể tạo một kho lưu trữ với một thư mục cơ sở khác với thực tế với:

tar -c --transform 's,^\.,mybasedir,' .

Chỉ cần điều chỉnh biểu hiện sed cho nhu cầu của bạn.


5

OK, tôi cũng phát hiện ra rằng

tar -czvf file1.tar.gz /home/user1/dir1/../dir1

cũng làm việc theo cách tôi muốn.


Mặc dù các ký tự đại diện như "*" sau đó không hoạt động
Curtis Yallop

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.