rsync
Quy tắc lọc toàn cầu bắt đầu bằng một đầu /
được neo vào gốc của chuyển. Trích dẫn từ phần "INCLUDE / EXCLUDE PATULN RULES" của trang man:
nếu mẫu bắt đầu bằng a / thì nó được neo vào một vị trí cụ thể trong hệ thống phân cấp của các tệp, nếu không thì nó được khớp với phần cuối của tên đường dẫn. Điều này tương tự như một ^ hàng đầu trong các biểu thức thông thường. Do đó, "/ foo" sẽ khớp với tên của "foo" ở "gốc của chuyển khoản" (đối với quy tắc chung) hoặc trong thư mục của tệp hợp nhất (đối với quy tắc mỗi thư mục).
Trong lệnh của bạn ( rsync ... -arv /home/ben home-ben/
), tệp /home/ben/foo
sẽ được chuyển đến home-ben/ben/foo
. Nguồn gốc của chuyển là home-ben
và đường dẫn bộ lọc chính xác là /ben/foo
. Như vậy
- để phù hợp với
/home/ben/.ccache
bạn, bạn cần một đường dẫn bộ lọc/ben/.ccache
- để phù hợp với
/home/ben/build/
bạn, bạn cần một đường dẫn bộ lọc/ben/build/
Một lời giải thích chi tiết hơn có thể được tìm thấy trong phần "ANCHORING INCLUDE / EXCLUDE THỰC HIỆN" của rsync(1)
trang man .
Lưu ý rằng chỉ cần bỏ đi hàng đầu /
không nhất thiết là những gì bạn muốn. Trích dẫn một lần nữa từ cùng một phần trang người đàn ông:
Một "foo" không đủ tiêu chuẩn sẽ khớp với tên của "foo" ở bất cứ đâu trong cây vì thuật toán được áp dụng đệ quy từ trên xuống; nó hoạt động như thể mỗi thành phần đường dẫn có một lượt ở cuối tên tệp. Ngay cả "phụ / foo" chưa được quản lý sẽ khớp với bất kỳ điểm nào trong hệ thống phân cấp nơi "foo" được tìm thấy trong một thư mục có tên "phụ". Xem phần về ANCHORING INCLUDE / EXCLUDE THỰC HIỆN để biết một cuộc thảo luận đầy đủ về cách chỉ định một mẫu phù hợp ở gốc của chuyển khoản.
Do đó, một mẫu bộ lọc build/
sẽ khớp với một thư mục xây dựng ở bất cứ đâu trong /home/ben
, thậm chí /home/ben/many/sub/directories/build/
.