Я запускал 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, как в приведенном выше отчете.
Вопросов:
- Первая часть подробного вывода (создание списка файлов) определенно говорит
Input/output error (5)
о КАЖДОМ файле, который не будет скопирован? - Означает ли
code 23
это, что все файлы, кроме тех,Input/output error (5)
которые были успешно скопированы?
grep '^rsync: ' output
могут быть полезны.Ответы:
23
только означает (со страницы руководства):Для всего, что не может быть передано, вы получите сообщение об ошибке. Обратите внимание, что сообщения об ошибках могут касаться открытия или чтения каталогов, поэтому вы не обязательно увидите сообщение об ошибке для каждого файла, который не может быть передан.
Если ваш источник не изменился, вы можете запустить
rsync
снова с,-n
чтобы увидеть, что он будет передавать на этот раз без фактической передачи.О разнице в байтах,
rsync
дает вам размер файлов (сколько данных можно прочитать из них). Вы уверены,Finder
что не говорит вам об использовании диска вместо этого?Также обратите внимание, что NTFS может хранить данные в альтернативных потоках или атрибутах файлов и
rsync
, как правило, не будет передавать (не знает) их (и это может также учитывать многое).источник
Input/output error (5)
?Input/output error (5)
. Вы можете объяснить?echo > file; du -k file
посмотреть, сколько в исходной файловой системе, но в ntfs это обычно 4 КБ).rsync
скажет вам, что размер есть1
, но Finder может сказать вам 4096 для этого файла./foo/bar
и/foo/bar/baz
не будет переведен либо.Вы можете отключить вывод ошибок без rsync, используя
-q
флаг rsync .Если вы снова запустите rsync с
-q
флагом, скорее всего, rsync все равно потерпит неудачу, но, по крайней мере, на этот раз любые сообщения об ошибках, которые вызывают вашу проблему, не будут скрыты за строками и строками сообщений о состоянии передачи файлов.источник
Re: ошибка 23-- Наиболее распространенная причина возникновения этой ошибки - сделать незначительную опечатку, входящую в источник rsync. Посмотрите на исходную команду и убедитесь, что все проверяется на соответствие ls, и найдите глупые тонкие вещи, такие как лишний пробел или проблема 1-l.
источник