Cách bao gồm các tệp được loại trừ trong rsync


16

Tôi đang cố gắng thiết lập một rsync loại trừ tất cả .*các tệp ngoại trừ .htaccessnhưng thật không may, điều này không hoạt động:

rsync -avP --exclude=".*" --include="./.htaccess" ./. user@server:/dir

Có thể bằng cách nào đó loại trừ các quy tắc loại trừ chung?

Câu trả lời:


24

Quy tắc kết hợp đầu tiên được áp dụng, vì vậy bao gồm .htaccesstrước khi loại trừ .*.

rsync -avP --include=".htaccess" --exclude=".*" . user@server:/dir

Bản sao này .htaccessở mọi cấp độ. Tôi không biết bạn dự định làm gì ./.htaccess; nếu bạn chỉ muốn khớp một tệp ở gốc của bản sao, hãy bắt đầu mẫu bằng a /. Nếu bạn chỉ muốn root .htaccess, bạn không thể sử dụng --include='/.htaccess' --exclude='.*', bởi vì quy tắc không root thực sự được ưu tiên ở đây, bạn cần phải làm một cái gì đó phức tạp hơn:

rsync -avP --exclude='/*/**/.htaccess' --include='.htaccess' --exclude=".*" . user@server:/dir

Đọc thêm: các nguyên tắc cơ bản cho bộ lọc rsync .


@ fred.bear: Đó là một lỗi đánh máy chính hãng và khó chịu. Cảm ơn vì đã phát hiện ra nó!
Gilles 'SO- ngừng trở nên xấu xa'

Cảm ơn, tôi đã thử đặt cái --includeđầu tiên, nhưng "./" ở phía trước "./.htaccess" là thứ đã giết chết nó.
Giàu

1
@Rich lưu ý rằng nếu có các thư mục ẩn chứa .htaccesstệp, bạn sẽ phải --include='.*/'(tôi nghĩ) trước trận chung kết --exclude, xem thêm tại đây
Tobias Kienzler
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.