2013-09-26 120 views
27

Tôi đang sử dụng rsync để đồng bộ tập tin từ một nguồn đến một đích đến:Ngăn chặn rsync xóa các tập tin địa điểm phù hợp với một mô hình cho

rsync -av --delete source destination 

Tôi có một thư mục duy nhất ở phía đích đến mà không phải là trên bên nguồn. Tôi muốn ngăn rsync xóa thư mục này. Có tùy chọn nào tôi có thể chuyển sang rsync để ngăn thư mục này bị xóa khi đồng bộ không?

Trả lời

34

Bạn có thể loại trừ tệp/thư mục bằng --exclude. Điều này sẽ ngăn chặn các thư mục somedir khỏi bị đồng bộ hóa/xóa:

rsync -avrc --delete --exclude somedir source destination 
+5

Nếu bạn muốn loại trừ 'somedir' chỉ từ một vị trí cụ thể trong cây thư mục, bạn có thể neo loại trừ bằng"/". Điều này sẽ cải thiện hiệu suất - rsync sẽ chỉ phải kiểm tra đường dẫn một lần! ví dụ. 'rsync -avrc --delete --exclude/path/p2/somedir nguồn đích' –

+0

@RandySkretka - cảm ơn cho mẹo đó. Đó là những gì tôi đã mất tích. – Corin

+1

'-r' được ngụ ý bởi' -a' và không bắt buộc. –

21

Như đã đề cập trong một similar question, điều này có thể được thực hiện bằng cách sử dụng tùy chọn --filter với protect quy tắc:

$ rsync ... --filter 'protect /remote-directory-to-keep/' ... 

Không giống như câu trả lời chấp nhận hiện nay Ví dụ: sử dụng --filter hữu ích nếu bạn cũng muốn sử dụng --exclude với --delete-excluded.