rsync --delete không hoạt động

Sep 15 2020

Hệ điều hành là Debian 10, rsync phiên bản 3.1.3. Tôi đang chạy rsync như thế này:

time rsync -ar --delete --info=progress2 --files-from=filelist.txt . /path/to/dest

Thao tác này có tác dụng sao chép các tệp, nhưng không xóa bất kỳ thứ gì đã bị xóa. (Hoặc bị xóa hoàn toàn khỏi src, hoặc trong trường hợp của tôi, bị xóa khỏi filelist.txt) Đó là một vấn đề lớn. Cách giải quyết duy nhất mà tôi đã tìm thấy là chỉ đơn giản là nuke toàn bộ điểm đến và chỉ sao chép lại mọi thứ, nhưng điều này mất rất nhiều thời gian và về cơ bản phủ nhận quan điểm của việc sử dụng rsync ngay từ đầu.

Đây có phải là một lỗi? Làm cách nào để rsync hoạt động bình thường, tôn vinh cờ --xóa như nó phải làm?

Biên tập:

Ví dụ:

  • Nếu filelist.txt có "foo" thì / path / to / dest sẽ chứa "foo".
  • Nếu filelist.txt chứa "foo" và "bar" thì / path / to / dest sẽ chứa "foo" và "bar".
  • Nếu filelist.txt chứa "foo", "bar" và "bat" thì / path / to / dest sẽ chứa "foo", "bar" và "bat".
  • Vân vân

Giả sử "foo" "bar" "bat" vv là các thư mục.

Trả lời

3 laktak Sep 24 2020 at 14:24

Bạn cần yêu cầu rsync xóa các đối số bị thiếu:

rsync -arv --delete-missing-args --delete --info=progress2 --files-from=filelist.txt . /path/to/dest
  • Vì vậy, nếu bạn xóa thư mục foonó sẽ sau đó cũng bị xóa trong /path/to/destvới --delete-missing-args.
  • foovẫn cần được liệt kê trong filelist.txt.
  • các --deletetranh luận là cần thiết để cho phép rsync để xóa các tập tin trong foothư mục
SandeepKothari Sep 28 2020 at 15:16

Không. rsyncSẽ không xóa tệp / dirs chỉ vì danh sách tệp không chứa các tệp đó hoặc nó trống.

nếu bạn đang sử dụng --files-fromnó sẽ cố gắng chỉ đồng bộ hóa các tệp được liệt kê từ nguồn đến đích.

Nó sẽ không xóa các tệp chỉ vì chúng không có trong danh sách tệp được chuyển đến --files-from.

Để --delete hoạt động, bạn cần sử dụng đường dẫn nguồn thực tế .. như vậy

rsync -ar --delete path/to/src path/to/destination