rsync --delete không hoạt động
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
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ê trongfilelist.txt.- các
--deletetranh luận là cần thiết để cho phép rsync để xóa các tập tin trongfoothư mục
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