Rsync 错误 23:我能知道哪些文件没有传输吗?

the*_*ror 40 rsync

sudo rsync -va --progress从一个外部驱动器的根目录运行到另一个外部驱动器上的文件夹。原因是源驱动器有一个错误的 NTFS,而我无法访问 Windows PC 来修复 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]
Run Code Online (Sandbox Code Playgroud)

我保存了整个终端输出。一开始,Input/output error (5)我实际上不需要的文件有几百个,总共大约 2GB。OSX Finder“磁盘使用情况”告诉我源是 6170 亿字节,而不是上面报告中的 608。

问题:

  1. 详细输出的第一部分(构建文件列表)是否肯定会Input/output error (5)针对每个不会被复制的文件?
  2. 是否code 23意味着除文件外的所有文件Input/output error (5)都已成功复制?

Sté*_*las 27

23 仅表示(来自手册页):

23 部分传输错误

对于无法传输的所有内容,您将收到一条错误消息。请注意,错误消息可能与打开或读取目录有关,因此您不一定会看到每个无法传输的文件的错误消息。

如果您的源没有更改,您可以rsync再次运行-n以查看这次将传输的内容,而无需实际进行传输。

关于字节差异,rsync为您提供文件的大小(可以从中读取多少数据)。你确定Finder不告诉你磁盘使用情况吗?

另请注意,NTFS 可以将数据存储在文件的备用或属性中,并且rsync通常不会传输(不知道)那些(并且这也可以解释很多)。


小智 21

您可以使用 rsync 的-q标志使 rsync 的非错误输出静音。

-q, --quiet                 suppress non-error messages
Run Code Online (Sandbox Code Playgroud)

如果您再次使用该-q标志运行 rsync ,rsync 可能仍然会失败,但至少这次导致您的问题的任何错误消息都不会隐藏在文件传输状态消息的行和行下。


小智 5

回复:错误 23-- 出现此错误的最常见原因是在 rsync 源中输入了一个小错误。查看您的源命令并确保所有内容都根据 ls 进行检查,并寻找愚蠢的微妙事物,例如额外的空间或 1-l 问题。

  • 1-l 问题是指由于所使用的字体而无法区分外观相似的字符。“1”、“l”、“我”和“|” 是常见的混淆词,“0”和“O”也是如此。 (3认同)
  • 什么是 1-l 问题? (2认同)