Bạn đang tìm kiếm đối số --exclude
.
--exclude=PATTERN
Một số người dùng tìm thấy exclude
tùy chọn gây nhầm lẫn. Dưới đây là một số cạm bẫy phổ biến:
Các chế độ hoạt động chính của tar
không hành động dựa trên một tên đường dẫn được liệt kê một cách rõ ràng trên dòng lệnh nếu một trong các tên file của nó thành phần bị loại trừ. Trong ví dụ trên, nếu bạn tạo một kho lưu trữ và loại trừ các tệp kết thúc bằng *.o
, nhưng rõ ràng tên tệp dir.o/foo
sau khi tất cả các tùy chọn đã được liệt kê, dir.o/foo
sẽ bị loại trừ khỏi lưu trữ.
Đôi khi bạn có thể nhầm lẫn ý nghĩa của --exclude=PATTERN
và --exclude-from=FILE-OF-PATTERNS
(-X FILE-OF-PATTERNS
). Hãy cẩn thận : sử dụng --exclude=PATTERN
khi tệp bị loại trừ là được đưa ra làm mẫu trên dòng lệnh. Sử dụng --exclude-from=FILE-OF-PATTERNS
để giới thiệu tên của tệp chứa danh sách các mẫu, một mẫu trên mỗi dòng; mỗi mẫu này có thể loại trừ 0, một hoặc nhiều tệp.
Khi bạn sử dụng --exclude=PATTERN
, hãy đảm bảo báo giá tham số PATTERN , do đó, GNU tar
thấy các ký tự đại diện như *
. Nếu bạn không làm điều này, trình bao có thể tự mở rộng *
bằng cách sử dụng các tệp , vì vậy, tar
có thể nhận danh sách tệp thay vì một mẫu hoặc không có gì. Điều này có thể không tương ứng với những gì bạn muốn.
Ví dụ, viết:
$ tar -c -f ARCHIVE.TAR --exclude '*.o' DIRECTORY
hơn:
$ tar -c -f ARCHIVE.TAR --exclude *.o DIRECTORY
- Bạn phải sử dụng sử dụng cú pháp vỏ, hoặc globbing, chứ không phải là
regexp
cú pháp, khi sử dụng loại trừ tùy chọn trong tar
. Nếu bạn cố gắng sử dụng cú pháp regexp
để mô tả các tệp bị loại trừ, lệnh của bạn có thể không thành công.
Cảm ơn bạn đã trả lời. Bạn đang rất đúng --exclude có thể là một chút bối rối. Tôi không hiểu nó 100% bản thân mình cho đến khi tôi đọc lời giải thích của bạn. Cảm ơn bạn – VinkoCM