Điểm:1

Không nhận được đầu ra phù hợp khi sử dụng rsync --delete

lá cờ ng

Tôi đang cố xóa các tệp bằng cách sử dụng rsync --delete nhưng tôi vẫn nhận được kết quả này.

ảnh chụp màn hình cli

sudodus avatar
lá cờ jp
`rsync` không phải là một công cụ xóa chung. Nó là một công cụ sao chép để sao chép/cập nhật cây thư mục đích với các tệp mới hoặc cập nhật trong cây thư mục nguồn tương ứng. Tùy chọn `--delete` là 'chỉ' để đồng bộ hóa, nghĩa là xóa các tệp trong đích, nếu tệp tương ứng trong nguồn đã bị xóa.
sudodus avatar
lá cờ jp
`rm` 'remove' là công cụ Linux tiêu chuẩn để xóa alias xóa tệp: Tương ứng với ảnh chụp màn hình của bạn, bạn có thể thử `rm /tmp/backup/foto3.txt` hoặc bằng một điểm kiểm tra, để xác nhận, `rm -i /tmp /backup/foto3.txt`
Siebren De Coster avatar
lá cờ ng
@sudodus vậy để sử dụng --delete tôi phải xóa các tệp gốc khỏi thư mục gốc?
Điểm:0
lá cờ jp

rsync --delete

@sudodus vậy để sử dụng --delete tôi phải xóa các tệp gốc khỏi thư mục gốc?

Đúng, nhưng, tôi muốn nói rằng mục đích là theo cách khác: Nó sẽ giúp bạn xóa một tệp trong mục tiêu, khi bạn đã xóa tệp tương ứng trong nguồn.

Nếu bạn muốn tránh sao chép một số tệp (nhưng giữ chúng trong nguồn), bạn có thể sử dụng --loại trừ.


rsync không phải là một công cụ xóa chung. Nó là một công cụ sao chép để sao chép/cập nhật cây thư mục đích với các tệp mới hoặc cập nhật trong cây thư mục nguồn tương ứng. Các --xóa bỏ tùy chọn là 'chỉ' để đồng bộ hóa, nghĩa là xóa một tệp trong mục tiêu, nếu tệp tương ứng trong nguồn đã bị xóa.

Xem mô tả chi tiết trong sách hướng dẫn người đàn ông rsync

        --delete xóa các tệp không liên quan khỏi thư mục đích
        --delete-before người nhận xóa trước xfer, không phải trong
        --delete-trong khi xóa người nhận trong quá trình truyền
        --delete-delay tìm xóa trong khi xóa, xóa sau
        --delete-after xóa người nhận sau khi truyền, không phải trong khi
        --delete-excluded cũng xóa các tệp bị loại trừ khỏi thư mục đích
        --ignore-missing-args bỏ qua các đối số nguồn bị thiếu mà không có lỗi
        --delete-missing-args xóa các đối số nguồn bị thiếu khỏi đích


   --xóa bỏ
          Điều này yêu cầu rsync xóa các tệp không liên quan khỏi bộ nhận
          bên (những bên không ở bên gửi), nhưng chỉ dành cho
          các thư mục đang được đồng bộ hóa. Chắc hẳn bạn đã từng hỏi
          rsync để gửi toàn bộ thư mục (ví dụ: "dir" hoặc "dir/") mà không cần
          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à rsync do đó nhận được
          yêu cầu chuyển các tệp riêng lẻ, không phải tệp cha mẹ
          danh mục. Các tệp được loại trừ khỏi quá trình chuyển cũng được
          không bị xóa trừ khi bạn sử dụng --delete-excluded
          tùy chọn hoặc đánh dấu các quy tắc là chỉ phù hợp ở bên gửi
          (xem các công cụ sửa đổi bao gồm/loại trừ trong phần QUY TẮC LỌC).

          Trước rsync 2.6.7, tùy chọn này sẽ không có hiệu lực trừ khi
          --recursive đã được kích hoạt. Bắt đầu với 2.6.7, việc xóa sẽ
          cũng xảy ra khi --dirs (-d) được bật, nhưng chỉ đối với các thư mục
          có nội dung đang được sao chép.

          Tùy chọn này có thể nguy hiểm nếu sử dụng không đúng cách! Nó rất là
          trước tiên hãy thử chạy bằng tùy chọn --dry-run (-n) để
          xem những tập tin nào sẽ bị xóa.

          Nếu bên gửi phát hiện bất kỳ lỗi I/O nào, thì việc xóa
          bất kỳ tệp nào tại đích sẽ tự động bị vô hiệu hóa.
          Điều này là để ngăn chặn các lỗi hệ thống tệp tạm thời (chẳng hạn như NFS
          lỗi) ở phía gửi gây ra việc xóa hàng loạt
          tập tin trên đích. Bạn có thể ghi đè điều này bằng
          --ignore-lỗi tùy chọn.

          Tùy chọn --delete có thể được kết hợp với một trong các
          --delete-WHEN các tùy chọn không có xung đột, cũng như
          --delete-loại trừ. Tuy nhiên, nếu không có --delete-WHEN
          tùy chọn được chỉ định, rsync sẽ chọn --delete-during
          thuật toán khi nói chuyện với rsync 3.0.0 hoặc mới hơn và
          --delete-before thuật toán khi nói chuyện với một rsync cũ hơn. Nhìn thấy
          cũng --delete-delay và --delete-after.

rừm 'remove' là công cụ Linux tiêu chuẩn để xóa bí danh xóa tệp

Tương ứng với ảnh chụp màn hình của bạn, bạn có thể thử

rm /tmp/backup/foto3.txt

hoặc với một trạm kiểm soát, để xác nhận,

rm -i /tmp/backup/foto3.txt
Jags avatar
lá cờ kp
xin chào @sudodus, bạn có thể mở rộng về `--exclude` không. Giả sử `nguồn` và `đích` được đồng bộ hóa bằng cách sử dụng `rsync`; cả hai chứa 3 tệp: `a.txt b.txt c.txt`. Bây giờ tôi muốn giữ `a.txt` trong `nguồn` chứ không phải trong `đích`; và muốn xóa `c.txt` khỏi `nguồn` nhưng muốn giữ nó trong `đích`. Vậy tôi nên sử dụng `--exclude` như thế nào. Cảm ơn rất nhiều.
sudodus avatar
lá cờ jp
@Jags, vui lòng tạo một câu hỏi của riêng bạn và liên kết với nó ở đây để tôi có thể tìm thấy nó dễ dàng và tôi sẽ cố gắng giải thích.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.