Tiếp tục chuyển một tập tin bằng rsync


22

Trong Ubuntu, tôi muốn sao chép một tệp lớn từ ổ cứng của mình sang ổ đĩa di động bằng rsync. Vì lý do này hay lý do khác, hoạt động không thể hoàn thành trong một lần chạy. Vì vậy, tôi đang cố gắng tìm ra cách sử dụng rsync để tiếp tục sao chép tệp từ nơi nó bị bỏ lại lần trước.

Tôi đã cố gắng sử dụng tùy chọn - partial hoặc --inplace, nhưng cùng với --prowards, tôi đã tìm thấy rsync với --partial hoặc --inplace thực sự bắt đầu từ đầu thay vì từ những gì còn lại lần trước. Tự động dừng rsync sớm và kiểm tra kích thước của tệp đã nhận cũng xác nhận những gì tôi tìm thấy.

Nhưng với --append, rsync bắt đầu từ những gì còn lại lần trước.

Tôi bối rối khi tôi thấy trên trang web - partial, --inplace hoặc --append dường như liên quan đến việc tiếp tục sao chép từ những gì còn lại lần trước. Ai đó có thể giải thích sự khác biệt? Tại sao - một phần hoặc - tại chỗ không hoạt động để tiếp tục một bản sao? Có đúng là để nối lại một bản sao, rsync phải hoạt động với tùy chọn --append?

Ngoài ra, nếu một phần tệp được để lại bởi mv hoặc cp không phải bởi rsync, liệu rsync - có đúng không?

Cảm ơn và trân trọng!


Sự hiểu biết của tôi về cách rsync hoạt động còn hạn chế, nhưng để trả lời bạn câu hỏi cuối cùng. Nếu một cp không đầy đủ, rsync sẽ tiếp tục sao chép. Tôi tin rằng rsync băm các tệp theo cách có thể tìm thấy phần đầu của tệp giống nhau và sao chép phần còn lại của tệp.
Scott McClenning

Câu trả lời:


25

Nhìn vào một số trang cho rsync:

--append
Điều này khiến rsync cập nhật tệp bằng cách gắn thêm dữ liệu vào cuối tệp, giả sử rằng dữ liệu đã tồn tại ở phía nhận giống hệt với phần bắt đầu của tệp ở phía gửi.

--inplace
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 pháp mặc định tạo một bản sao mới của tệp và di chuyển nó vào vị trí khi nó hoàn thành, thay vào đó, rsync ghi dữ liệu được cập nhật trực tiếp vào tập tin đích.

--partial
Theo mặc định, rsync sẽ xóa bất kỳ tệp được chuyển một phần nếu quá trình truyền bị gián đoạn. Trong một số trường hợp, mong muốn giữ các tập tin được chuyển một phần.

Âm thanh như nếu tập tin rất lớn, bạn sẽ muốn sử dụng --partial --append. ( --appendngụ ý --inplace) Nếu tệp lớn này thay đổi, sau đó thả --appendvà rsync sẽ kiểm tra phần đầu của tệp để đảm bảo tệp quá khớp với tệp nguồn. --inplaceĐối với tôi nghe có vẻ nguy hiểm, ngoại trừ nếu bạn đang tạo một tệp lớn, bạn không muốn rsync tạo một tệp tạm thời mới của phần đầu, tiếp tục chuyển, sau đó xóa tệp cũ để đặt tệp mới vào vị trí. Việc chuyển sẽ diễn ra nhanh hơn nếu bạn có thể sử dụng cùng một tệp, chưa kể dung lượng đĩa cần cho việc chuyển sẽ ít hơn.

Ngoài ra, tôi đã tìm thấy từ toàn bộ điểm chuyển tập tin, một bản sao nhanh hơn rsync. Tuy nhiên, nếu tôi cần cập nhật một tệp, tôi đã đồng bộ hóa rsync nhanh hơn so với truyền lại toàn bộ tệp. (như tôi đã nói ở trên) Rupync sẽ có thể tiếp tục từ một cp.

Tôi hi vọng cái này giúp được.


1
Bạn có thể muốn xem báo cáo lỗi này : lists.samba.org/archive/rsync/2012-June/027615.html
Stefan Schmidt

Điểm hay về việc sử dụng cp nhanh hơn theo mặc định và rsync để "sửa chữa" một quy trình cp bị hỏng! Không gọn gàng :)
Samuel Lampa
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.