RSync - Không bao gồm một thư mục con cụ thể và các phần tử con của nó trong đó thư mục con tồn tại ở các cấp độ khác nhau


37

Ngày mai

Tôi đang sử dụng rsync để đồng bộ hóa đệ quy một cây thư mục từ xa trông giống như sau:

/folderA/a1/cache
/folderA/a1/cache/A1
/folderA/a1/cache/A2
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder/cache
/folderB/cache/
/folderB/b1/somefolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache
/folderB/b1/somefolder/yetanotherfolder/cache/B1
/folderB/b1/somefolder/yetanotherfolder/cache/B2

Tôi không biết cây thư mục sẽ trông như thế nào và nó sẽ thay đổi theo thời gian. Vì vậy, những gì tôi muốn có thể làm là đệ quy rsync ở trên nhưng loại trừ thư mục "bộ đệm" và bất kỳ thư mục con nào chứa trong đó để cuối cùng tôi đồng bộ hóa:

/folderA/a1
/folderA/a1/somefolder
/folderA/a1/someotherfolder
/folderA/a2/somefolder
/folderB/
/folderB/b1/somefolder
/folderB/b1/somefolder/yetanotherfolder/

Bất kỳ đề xuất?


Câu trả lời:


55

Bạn muốn --excludecờ. Ví dụ: rsync cục bộ:

rsync -a --exclude cache/ src_folder/ target_folder/

Nó thực sự đơn giản - quy tắc loại trừ đó sẽ khớp với một thư mục có tên "cache" ở bất cứ đâu trong cây của bạn.

Để biết thêm thông tin, hãy tìm phần "- bao gồm" và phần "QUY TẮC LỌC" trên trang man rsync:

http://www.samba.org/ftp/rsync/rsync.html


1
Đừng !! Cảm ơn đó là những câu trả lời đơn giản mà tôi thích nhất :-)
TheEdge

1
Điều gì về không phải bất cứ nơi nào trên cây? Giống như, chỉ loại trừ a/cache. CẬP NHẬT Xem câu trả lời này
x-yuri

2
Ngoài ra --exclude /cache/(với hàng đầu /) sẽ chỉ loại trừ a/cachethư mục, không phải bất kỳ thư mục có tên cache.
Amir Ali Akbari

Tại sao a/ b/trong dòng lệnh trên, nó có nghĩa là gì?
Danijel

1
@Danijel: a/là thư mục chúng tôi đang đồng bộ hóa (hoặc sao chép) từ; b/là thư mục chúng tôi đồng bộ hóa vào.
Jander
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.