Помилка Rsync 23: Чи можу я визначити, які файли не були передані?


32

Я перебіг sudo rsync -va --progressвід кореня одного зовнішнього диска до папки на іншому зовнішньому диску. Причина полягає в тому, що джерело накопичувача має повну помилку NTFS, і я не маю доступу до ПК з Windows для відновлення NTFS.

Через 10 годин він сказав:

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]

Я зберегла весь вихід терміналу. На початку є кілька сотень Input/output error (5)для файлів, які мені фактично не потребують приблизно 2 Гб. OSX Finder "використання диска" говорить мені, що джерело становить 617 мільярдів байт, а не 608, як у вищезгаданому звіті.

Запитання:

  1. Перша частина багатослівного виводу (складання списку файлів) обов'язково говорить Input/output error (5)про ВСІЙ файл, який не буде скопійовано?
  2. Чи code 23означає, що всі файли, крім тих Input/output error (5), були успішно скопійовані?

1
Можливо, корисно: повідомлення про помилки rsync починаються з "rsync:", тому grep '^rsync: ' outputможуть бути корисними.
barrycarter

Відповіді:


19

23 лише засоби (зі сторінки man):

23 Часткова передача через помилку

За все, що не вдалося перенести, ви отримаєте повідомлення про помилку. Зауважте, що повідомлення про помилку може стосуватися відкриття чи читання каталогів, тому ви не обов’язково побачите повідомлення про помилку для кожного файлу, який не вдалося перенести.

Якщо ваш джерело не змінився, ви можете запустити його rsyncще раз, -nщоб побачити, що він би перенесли цього разу, не здійснюючи фактично передачу.

Про різницю в байтах rsyncдає вам розмір файлів (скільки даних можна прочитати з них). Ви впевнені, Finderщо натомість вам не повідомляють про використання диска ?

Також зауважте, що NTFS може зберігати дані в альтернативних потоках або атрибутах файлів, і rsync, як правило, не передаватиме (не знає) тих (і це також може нараховувати багато).


Так ви кажете, що ВСІ дані (незалежно від того, наскільки вони були пошкодженими), які не були передані, були вказані на початку як " Input/output error (5)?
термар

щодо байтової різниці: Так, це правильно. Мене бентежить, чому різниця між звітом rsync та "використанням диска" Finder становить 9 мільярдів байт, але я можу визначити лише 2-3 мільярди байтів файлів, які говорили Input/output error (5). Ви можете пояснити?
термар

1
@themirror, 1-байтовому файлу все одно знадобиться кілька кілобайт, виділених на диску для його зберігання (спробуйте echo > file; du -k fileпобачити, скільки у вихідній файловій системі, але на ntfs, як правило, це 4k). rsyncскаже вам, що розмір є 1, але Finder може сказати вам 4096 для цього файлу.
Stéphane Chazelas

@themirror, wrt ваш перший коментар, я кажу, що для всього (вміст файлу, див. мою редакцію про альтернативні потоки), які не вдалося перенести, ви отримаєте помилку, але якщо ви не можете прочитати каталог / foo , тоді, очевидно, /foo/barі /foo/bar/bazніхто не буде переданий.
Stéphane Chazelas

17

Ви можете заглушити вихід помилки rsync, використовуючи -qпрапор rsync .

-q, --quiet                 suppress non-error messages

Якщо ви знову запустите rsync із -qпрапором, rsync, ймовірно, все-таки не вдасться, але принаймні цього разу повідомлення про помилки, які спричиняють вашу проблему, не будуть поховані під рядками та рядками повідомлень про стан передачі файлів.


2

Re: помилка 23-- Найпоширенішою причиною виникнення цієї помилки є те, щоб зробити незначну друкарську помилку, вводячи джерело rsync. Перегляньте свою вихідну команду і переконайтеся, що все перевіряється на ls, і шукайте нерозумні тонкі речі, такі як додатковий простір або 1-літрова проблема.


Я знаю, що це нерозумно, але я навіть пішов маршрутом, щоб продовжувати копати код, поки не зрозумів, що допустив цю тупу помилку. Дякую!
rburhum
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.