rsync: Làm thế nào để loại trừ Dotfiles chỉ trong thư mục trên cùng?


8

Khi thực hiện sao lưu dưới Bash với rsync, tôi đang cố gắng loại trừ tất cả các dotfiles và các thư mục ẩn trong thư mục trên cùng, nhưng không phải các thư mục trong các thư mục được nhắm mục tiêu khác. Ví dụ:

/copyme.c  
/.dontcopythisfile  
/.dontcopythisdirectory/or_its_contents  
/directory/.butcopymetoo

rsync -a --include=".includeme" --exclude=".*" . DESTkhông thể sao chép các dotfiles mong muốn trong các thư mục con, nhưng các biến thể như --exclude="./.*"cũng thất bại.

Gợi ý? Điều này có yêu cầu một quy tắc lọc trái ngược với đơn giản hơn --excludekhông?

regex  bash  rsync 

Câu trả lời:


12

Bạn nên sử dụng neo và trong rsync, ký tự neo là '/'.

Vì vậy, trong chuỗi của bạn nên:

rsync -a --include="/.includeme" --exclude="/.*" ./ DEST

0

Tôi thường thích tạo các tệp bộ lọc .rsync chứa các mẫu:

- /.*

Theo cách đó

rsync -hxDPavilyzHFF --stats --delete ./ remote:/backup/

là lệnh sao lưu lý tưởng. Việc lọc được thực hiện bởi các cờ -FF.

Lưu ý rằng bằng cách sử dụng phương pháp này, bạn có thể có các tệp bộ lọc .rsync khác nhau trong các thư mục con khác nhau, áp dụng cho các cây con tương ứng của chúng. Bạn cũng có thể ghi đè các loại trừ trong thư mục con bằng cách sử dụng phương pháp này.

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.