Làm thế nào để cp các tập tin còn lại sau khi thất bại


23

Tôi đang cố gắng sao chép một thư mục lớn từ ổ đĩa này sang ổ đĩa khác. Tôi đã đăng xuất nhầm trước khi nó được hoàn thành nên chỉ có khoảng 80% các tệp được sao chép. Có cách nào để sao chép các tập tin còn lại mà không bắt đầu từ đầu không?

Câu trả lời:


35

Tôi sẽ thử

rsync -a /from/file /dest/file

bạn có thể sử dụng các tùy chọn khác như --append, -P (--partial --progress). Xem người đàn ông rsync để biết thêm.

Hoặc nếu bạn đang sử dụng cpthì sử dụng cp -u.

từ man cp:

-u, --update
     copy only when the SOURCE file is newer than the destination file or when the destination file is missing.

1
Tôi sẽ phải đưa nó cho Rahul cus, anh ta vừa đánh bại bạn, nhưng cảm ơn và mọi người đều nhận được sự ủng hộ!
barro32

3
Nếu bản sao đầu tiên kết thúc đột ngột, một trong các tệp chỉ có thể được sao chép một phần và cp -ucó thể không quan tâm, vì nó chỉ kiểm tra dấu thời gian chứ không phải kích thước ... Vì vậy, touchtrước tiên bạn cần phải sử dụng tệp nguồn nếu bạn phải sử dụng tệp đó . (Hoặc chỉ sử dụng rsync.)
ilkkachu

@ilkkachu đúng vậy. Tôi sẽ cập nhật nó sớm.
Rahul

Có bao giờ cp để lại một tập tin duy nhất chỉ được chuyển một phần? Nếu vậy, thì có vẻ như nó sẽ để lại cho bạn một thư mục chỉ hoạt động một phần.
Trevor

15

Đối với chuyển tập tin một phần, cpcó thể không phải là những gì bạn cần.

Tôi đề nghị sử dụng rsyncthay thế. Ngay cả khi chuyển thất bại, bạn chỉ có thể chạy lại lệnh sau đó và nó sẽ chỉ sao chép các tệp bị thiếu.

Thí dụ:

$ rsync -aPEmivvz from/ to/

(sẽ sao chép from/vào to/thư mục)

rsynckhông đồng bộ hóa và kiểm tra sau mỗi lần chuyển, đảm bảo các tệp đã được sao chép chính xác là không đáng kể.

Bộ swich -aPEmivvzlà lựa chọn chuyển tiếp tiêu chuẩn của tôi , bất cứ khi nào sao chép tệp qua mạng hoặc ổ đĩa ngoài, bao gồm các thiết bị bổ trợ, như Thẻ SD, v.v.

Đây là những công tắc tôi sử dụng hầu như luôn luôn:

-a: "archive", bao gồm -rlptgo(đệ quy, liên kết tượng trưng dưới dạng liên kết tượng trưng, ​​quyền, thời gian, nhóm, chủ sở hữu)

-P: "Tiến trình một phần" hiển thị thanh tiến trình tốt đẹp cho mỗi tệp

-E: "Khả năng thực thi" bảo tồn cho dù thực thi hay không

-m: "noempty" cắt tỉa các thư mục trống

-i: "Tóm tắt" tóm tắt thay đổi in cho tất cả các bản cập nhật

-vv: "dài dòng hơn"

-z: "nén"


6

Những gì bạn có thể muốn hơn là cptrong trường hợp này là rsync.

Chỉ cần sao chép đệ quy một cấu trúc thư mục sang một vị trí mới:

rsync -av /path/to/source /path/to/destination 

4

Bạn không nên sử dụng cpcho việc này. Như những người khác đã tuyên bố nó không phải là công cụ phù hợp cho công việc. Công cụ chính xác sẽ phụ thuộc vào mục tiêu của bạn.

Nếu bạn chỉ muốn một bản sao thẳng:

rsync /source /destinationvới một số cấp độ cờ. Xem các câu trả lời khác cho một số ví dụ thực sự tốt.

Nếu bạn muốn có bản cập nhật hai chiều

unisonlà con đường để đi Rupync không làm tốt việc giải quyết xung đột với các đồng bộ hai chiều. Đặc biệt xóa. Vì vậy, bạn muốn bản sao hai chiều cháy lênunison

Nếu bạn muốn sao lưu và các tệp dựa trên văn bản, thì bạn có thể thử sử dụng git. Git có thể được chạy cục bộ, không cần "máy chủ". Trong thực tế, máy chủ git chỉ là phương pháp chia sẻ tệp. Bạn hoàn toàn có thể có một repo git trên ổ đĩa sao lưu và "đẩy" nó. Một lần nữa, điều này chỉ thực sự hoạt động nếu các tệp dựa trên văn bản và bạn đang cố gắng sao lưu một chiều.

Một lần nữa nếu bạn muốn sao lưu (và không chỉ một lần) thì hãy xem deja-dupe, BackIntime hoặc các tùy chọn tương tự. Họ chụp ảnh dữ liệu tại một thời điểm. Tất cả đều chạy rsync dưới mui xe.


4

Bạn cũng có thể sao chép lại tất cả các tệp, yêu cầu xác nhận cho mỗi lần ghi đè, sau đó tự động trả lời không cho câu hỏi:

yes n | cp -i /source /dest

(bạn có thể đã sử dụng nhiều tùy chọn hơn, như -rvậy, vì vậy chỉ cần thêm chúng như cp -pri /source /dest...)


3

Sử dụng lệnh rsyncvới các tùy chọn sau:

rsync --progress --partial --append /source_file /destination_file
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.