Không tạo tệp tar trong thư mục bạn đang đóng gói:
tar -czf /tmp/workspace.tar.gz .
thực hiện thủ thuật, ngoại trừ nó sẽ giải nén các tệp trong thư mục hiện tại khi bạn giải nén. Tốt hơn nên làm:
cd ..
tar -czf workspace.tar.gz workspace
hoặc nếu bạn không biết tên của thư mục bạn đang ở:
base=$(basename $PWD)
cd ..
tar -czf $base.tar.gz $base
(Điều này giả định rằng bạn đã không theo dõi các liên kết tượng trưng để đến được vị trí của mình và trình bao không cố gắng đoán bạn lần thứ hai bằng cách nhảy ngược lại thông qua một liên kết tượng trưng - bash
không đáng tin cậy về mặt này. Nếu bạn phải lo lắng về điều đó, sử dụng cd -P ..
để thực hiện một thư mục thay đổi vật lý. Thật ngu ngốc rằng đó không phải là hành vi mặc định theo quan điểm của tôi - ít nhất là gây nhầm lẫn cho những người cd ..
chưa bao giờ có bất kỳ ý nghĩa thay thế nào.)
Một bình luận trong cuộc thảo luận nói:
Tôi [...] cần loại trừ thư mục trên cùng và tôi [...] cần đặt tar vào thư mục cơ sở.
Phần đầu tiên của nhận xét không có nhiều ý nghĩa - nếu tệp tar chứa thư mục hiện tại, nó sẽ không được tạo khi bạn giải nén tệp từ kho lưu trữ đó bởi vì, theo định nghĩa, thư mục hiện tại đã tồn tại (trừ những trường hợp rất kỳ lạ ).
Phần thứ hai của nhận xét có thể được xử lý theo một trong hai cách:
- Hoặc: tạo tệp ở một nơi khác -
/tmp
là một trong những vị trí khả thi - và sau đó di chuyển nó trở lại vị trí ban đầu sau khi hoàn tất.
- Hoặc: nếu bạn đang sử dụng GNU Tar, hãy sử dụng
--exclude=workspace.tar.gz
tùy chọn. Chuỗi sau dấu =
là một mẫu - ví dụ là mẫu đơn giản nhất - một khớp chính xác. Bạn có thể cần phải xác định --exclude=./workspace.tar.gz
xem bạn có đang làm việc trong thư mục hiện tại trái với các khuyến nghị hay không; bạn có thể cần xác định --exclude=workspace/workspace.tar.gz
xem bạn có đang tăng một cấp độ như được đề xuất hay không. Nếu bạn có nhiều tệp tar cần loại trừ, hãy sử dụng ' *
', như trong --exclude=./*.gz
.