Làm thế nào để nói với rsync không xóa một số thư mục tại đích?


7

Vì vậy, tôi sử dụng pelican để viết blog của mình và tôi tải lên toàn bộ bằng cách sử dụng rsync. ĐỒNG Ý.

Nhưng tôi cũng sử dụng Let Encrypt và do đó cần kho lưu trữ. Được biết đến được bảo tồn ở thư mục gốc của trang web của tôi.

Vì vậy, có một cách tôi có thể nói "rsync ... - đừng-xóa .well-biết ..."

Hiện tại, những đại diện đó được bảo vệ quyền, nhưng rsync không thích điều đó.

Đây là lệnh rsync hiện tại (được cài đặt bởi chính pelican, tôi đã không viết nó):

rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete $(OUTPUTDIR)/ $(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) --cvs-exclude

BTW: nếu bạn cũng có một số gợi ý để cải thiện hiệu quả rsync, tôi sẽ lấy nó (vâng, nó lạc đề).

Câu trả lời:


11

Từ man rsync

--delete Điều này yêu cầu rsync xóa các tệp không liên quan khỏi phía nhận (những tệp không ở phía gửi), nhưng chỉ cho các thư mục đang được đồng bộ hóa. Bạn phải yêu cầu rsync gửi toàn bộ thư mục (ví dụ: "dir" hoặc "dir /") mà không sử dụng ký tự đại diện cho nội dung của thư mục (ví dụ: "dir / *") vì ký tự đại diện được mở rộng bởi shell và do đó rsync được mở rộng yêu cầu chuyển các tệp riêng lẻ, không phải thư mục mẹ của tệp.

Vì vậy, tôi nghĩ rằng nó nên được

rsync -e "ssh -p $(SSH_PORT)" -P -rvzc --delete \
$(OUTPUTDIR)/ \
$(SSH_USER)@$(SSH_HOST):$(SSH_TARGET_DIR) \
--cvs-exclude --exclude=/.well-known

(giả sử .well-knownlà gốc của $(SSH_TARGET_DIR)/)


6

Bạn nên sử dụng --excludetùy chọn để rsyncbỏ qua thư mục đó. Trừ khi bạn cũng sử dụng --delete-excluded(trong trường hợp này bạn không nên sử dụng ), nó sẽ để nó một mình.

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.