Chỉ tải lên một phần của tệp bằng rsync


0

Tôi đang nghiên cứu rsync để đồng bộ hóa các thư mục từ xa và cục bộ trong windows (sử dụng cwrsync). Tôi có nghi ngờ rằng, có thể chỉ tải lên một phần của các thay đổi không?

Ví dụ: ban đầu tôi có tệp 100 MB, tôi sẽ tải nó lên bằng lệnh,

rsync -a /source/path/ /dest/path/

Sau đó tôi sẽ thực hiện một số thay đổi trong tập tin đó. Nếu tôi chạy lại cùng một lệnh, toàn bộ tệp 100 MB sẽ được tải lên lại. Thay vào đó, làm thế nào để nối các thay đổi được thực hiện vào tệp đó trong khi tải lên?

Câu trả lời:


2

Những gì bạn cần là --inplace Tùy chọn.

Tôi khuyên bạn nên đọc phần liên quan của hướng dẫn sử dụng rsync và hiểu tùy chọn này ngụ ý gì:

- tại chỗ Tùy chọn này thay đổi cách rsync chuyển tệp khi dữ liệu của nó cần được cập nhật: thay vì phương thức tạo mặc định   bản sao mới của tập tin và di chuyển nó vào vị trí khi nó hoàn thành,   Thay vào đó, rsync ghi dữ liệu cập nhật trực tiếp đến đích   tập tin.

Điều này có một số hiệu ứng:

  • Liên kết cứng không bị phá vỡ. Điều này có nghĩa là dữ liệu mới sẽ được hiển thị thông qua các liên kết cứng khác đến tệp đích. Hơn nữa, những nỗ lực   để sao chép các tệp nguồn khác nhau vào một tệp đích được liên kết nhiều   sẽ dẫn đến một "cuộc chiến giằng co" với dữ liệu đích thay đổi trở lại   Và ra.
  • Các tệp nhị phân đang sử dụng không thể được cập nhật (hệ điều hành sẽ ngăn điều này xảy ra hoặc các tệp nhị phân cố gắng hoán đổi dữ liệu của chúng sẽ   hành vi sai hoặc tai nạn).
  • Dữ liệu của tệp sẽ ở trạng thái không nhất quán trong quá trình chuyển và sẽ được giữ nguyên như vậy nếu quá trình truyền bị gián đoạn hoặc   nếu cập nhật thất bại.
  • Một tập tin mà rsync không thể ghi vào không thể được cập nhật. Mặc dù siêu người dùng có thể cập nhật bất kỳ tệp nào, nhưng người dùng bình thường cần được cấp quyền ghi   cho phép mở tệp để viết thành công.
  • Hiệu quả của thuật toán chuyển đổi delta của rsync có thể bị giảm nếu một số dữ liệu trong tệp đích bị ghi đè trước khi có thể   sao chép vào một vị trí sau trong tập tin. Điều này không áp dụng nếu bạn sử dụng --sao lưu , vì rsync đủ thông minh để sử dụng tệp sao lưu làm tệp cơ sở cho việc chuyển.

CẢNH BÁO: bạn không nên sử dụng tùy chọn này để cập nhật các tệp đang được   được người khác truy cập, vì vậy hãy cẩn thận khi chọn sử dụng cái này cho   bản sao.

Tùy chọn này hữu ích để chuyển các tệp lớn với khối dựa trên   thay đổi hoặc dữ liệu được thêm vào, và cả trên các hệ thống bị ràng buộc đĩa, không   mạng ràng buộc. Nó cũng có thể giúp giữ một hệ thống tập tin sao chép trên ghi   ảnh chụp từ chuyển hướng toàn bộ nội dung của tệp chỉ có   những thay đổi nhỏ.

Tùy chọn ngụ ý - một phần (vì chuyển khoản bị gián đoạn   không xóa tập tin), nhưng xung đột với --partial-dir - ngày cập nhật . Trước rsync 2.6.4 - tại chỗ cũng không tương thích với --compare-mệnh --link-mệnh .

Bạn cũng có thể quan tâm --append hoặc là --append-verify tùy chọn chỉ phát triển tập tin.


1

Bạn đang sử dụng rsync để sao chép từ thư mục này sang thư mục khác - Tùy chọn - tập tin có hiệu lực sau đó:

-W, - tập tin Với tùy chọn này, thuật toán chuyển delta của rsync không được sử dụng và toàn bộ tệp được gửi như hiện tại. Việc chuyển nhượng có thể là   nhanh hơn nếu tùy chọn này được sử dụng khi băng thông giữa nguồn   và máy đích cao hơn băng thông vào đĩa   (đặc biệt khi "đĩa" thực sự là một hệ thống tập tin được nối mạng). Điều này   là mặc định khi cả nguồn và đích được chỉ định là   đường dẫn cục bộ, nhưng chỉ khi không có tùy chọn viết theo lô có hiệu lực.

Bạn cần khởi động rsync ở chế độ daemon ở một bên để kích hoạt thuật toán rsync bằng chuyển delta.

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.