Lỗi Rsync 23: Tôi có thể cho biết tập tin nào chưa được chuyển không?


32

Tôi đã chạy sudo rsync -va --progresstừ thư mục gốc của một ổ đĩa ngoài đến một thư mục trên một ổ đĩa ngoài khác. Lý do là ổ đĩa nguồn có lỗi NTFS và tôi không có quyền truy cập vào PC Windows để sửa NTFS.

10 giờ sau nó nói:

sent 608725204596 bytes  received 19365712 bytes  15902210.53 bytes/sec
total size is 608586212274  speedup is 1.00
rsync error: some files could not be transferred (code 23) at /SourceCache/rsync/rsync-42/rsync/main.c(992) [sender=2.6.9]

Tôi đã lưu toàn bộ đầu ra thiết bị đầu cuối. Lúc đầu, có vài trăm Input/output error (5)tập tin tôi thực sự không cần tổng cộng khoảng 2GB. "Sử dụng đĩa" của OSX Finder cho tôi biết nguồn là 617 tỷ byte chứ không phải 608 như trong báo cáo trên.

Câu hỏi:

  1. Phần đầu tiên của đầu ra dài dòng (xây dựng danh sách tệp) có chắc chắn nói Input/output error (5)về MỌI tệp sẽ không được sao chép không?
  2. code 23nghĩa là tất cả các tệp ngoại trừ các tệp Input/output error (5)đã được sao chép thành công?

1
Có thể hữu ích: thông báo lỗi rsync dường như bắt đầu bằng "rsync:", vì vậy grep '^rsync: ' outputcó thể hữu ích.
barrycarter

Câu trả lời:


19

23 chỉ có nghĩa là (từ trang người đàn ông):

23 Chuyển một phần do lỗi

Đối với mọi thứ không thể chuyển, bạn sẽ nhận được thông báo lỗi. Lưu ý rằng các thông báo lỗi có thể là về việc mở hoặc đọc các thư mục, do đó bạn không nhất thiết phải xem thông báo lỗi cho mỗi tệp không thể chuyển được.

Nếu nguồn của bạn không thay đổi, bạn có thể chạy rsynclại -nđể xem những gì nó sẽ chuyển lần này mà không thực sự chuyển.

Về sự khác biệt byte, rsynccung cấp cho bạn kích thước của các tệp (có thể đọc được bao nhiêu dữ liệu từ chúng). Bạn có chắc chắn Finderkhông cho bạn biết việc sử dụng đĩa thay thế?

Cũng lưu ý rằng NTFS có thể lưu trữ dữ liệu trong các luồng hoặc thuộc tính thay thế của các tệp và rsyncthường sẽ không chuyển (không biết) những dữ liệu đó (và điều đó cũng có thể chiếm nhiều).


Vì vậy, bạn đang nói rằng TẤT CẢ các dữ liệu (cho dù bị hỏng như thế nào) mà không được chuyển đã được liệt kê ngay từ đầu Input/output error (5)?
themirror

liên quan đến sự khác biệt byte: Có đó là chính xác. Mặc dù tôi bối rối về lý do tại sao sự khác biệt giữa báo cáo của rsync và "mức sử dụng đĩa" của Finder là 9 tỷ byte nhưng tôi chỉ có thể xác định 2-3 tỷ byte tệp cho biết Input/output error (5). Bạn có thể giải thích?
themirror

1
@themirror, một tệp 1 byte sẽ vẫn cần vài kilo byte được phân bổ trên đĩa để lưu trữ (hãy thử echo > file; du -k filexem bao nhiêu trên hệ thống tệp nguồn, nhưng trên ntfs, thường là 4k). rsyncsẽ cho bạn biết kích thước là 1, nhưng Finder có thể cho bạn biết 4096 cho tệp đó.
Stéphane Chazelas

@themirror, viết bình luận đầu tiên của bạn, tôi đang nói rằng đối với mọi thứ (nội dung tệp, hãy xem chỉnh sửa của tôi về các luồng thay thế) không thể chuyển được, bạn sẽ gặp lỗi, nhưng nếu bạn nhận được thư mục không thể đọc / foo , sau đó rõ ràng /foo/bar/foo/bar/bazsẽ không được chuyển nhượng.
Stéphane Chazelas

17

Bạn có thể tắt đầu ra không lỗi của rsync bằng -qcờ của rsync .

-q, --quiet                 suppress non-error messages

Nếu bạn chạy lại rsync với -qcờ, rsync có thể vẫn thất bại, nhưng ít nhất lần này, bất kỳ thông báo lỗi nào gây ra sự cố của bạn sẽ không bị chôn vùi dưới các dòng và dòng thông báo trạng thái truyền tệp.


2

Re: error 23-- Lý do phổ biến nhất để có lỗi này là tạo một lỗi đánh máy nhỏ nhập vào nguồn rsync. Nhìn qua lệnh nguồn của bạn và đảm bảo mọi thứ kiểm tra chống lại ls và tìm kiếm những thứ tinh tế ngu ngốc như một không gian thừa hoặc vấn đề 1-l.


Tôi biết điều đó thật ngớ ngẩn, nhưng tôi thậm chí đã đi theo con đường để tiếp tục đào mã cho đến khi tôi nhận ra mình đã phạm phải sai lầm ngớ ngẩn này. Cảm ơn bạn!
rburhum
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.