Làm cách nào để loại trừ một thư mục cụ thể trên đích khi sử dụng rsync?


9

xem xét ví dụ sau:

/source
  /source/folder1
  /source/folder2
  /source/folder3

/destination
  /destination/folder2
  /destination/folder3
    /destination/folder3/mytestfolder1
  /destination/folder4
    /destination/folder4/mytestfolder1
    /destination/folder4/mytestfolder2

Tôi muốn đồng bộ hóa nguồn đến đích nhưng "/ đích / thư mục4 / mytestfolder1" phải được bỏ qua.

Tôi đã thử sử dụng tham số loại trừ

rsync -av --delete --progress --exclude "mytestfolder1" /source/ /destination/

nhưng điều này bỏ qua tất cả các thư mục có tên "mytestfolder1".

Khi tôi cung cấp đường dẫn đầy đủ, không có gì bị bỏ qua vì có vẻ như rsync nghĩ rằng đường dẫn nằm trong nguồn chứ không phải trên đích.

rsync -av --delete --progress --exclude "/destination/folder4/mytestfolder1" /source/ /destination/

rsync -av --delete --progress --exclude "destination/folder4/mytestfolder1" /source/ /destination/

Tôi đã tìm kiếm trên mạng nhưng không tìm thấy bất cứ điều gì hữu ích.

Cảm ơn đã giúp đỡ. :)

Câu trả lời:


9

Nếu bạn sử dụng một đường dẫn tuyệt đối trong bộ lọc (bao gồm / loại trừ), nó sẽ được hiểu bắt đầu từ gốc của đồng bộ hóa. Bạn không loại trừ một thư mục trong nguồn hoặc loại trừ một thư mục ở đích, bạn đang loại trừ một thư mục trong cây để đồng bộ hóa.

Như vậy:

rsync -av --delete --proceed --exclude " / thư mục4 / mytestfolder1 " / source / / Destination /
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.