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


32

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]

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

问题:

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

1
可能有帮助:rsync错误消息似乎以“ rsync:”开头,因此grep '^rsync: ' output可能会有所帮助。
barrycarter

Answers:


19

23 仅表示(从手册页中):

23由于错误导致部分转移

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

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

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

还要注意,NTFS可以将数据存储在文件的备用或属性中,并且rsync通常不会传输(不知道)那些(也可能占很大的比例)。


那么,您是说所有未传输的数据(无论多么损坏)在开始时都被列为“ Input/output error (5)?”。
themirror 2014年

关于字节差:是的,这是正确的。不过,我对为什么rsync的报告与Finder的“磁盘使用量”之间的差异为90亿字节感到困惑,但是我只能识别出2-3亿字节的文件Input/output error (5)。你可以解释吗?
themirror 2014年

1
@themirror,一个1字节的文件仍需要在磁盘上分配几千字节来存储它(尝试echo > file; du -k file查看源文件系统上有多少字节,但在ntfs上通常为4k)。rsync会告诉您大小为1,但是Finder可能会告诉您该文件为4096。
斯特凡Chazelas

@themirror,您的第一个评论,我是说对于无法传输的所有内容(文件内容,请参阅我对备用流的编辑),都会收到错误消息,但是如果您得到无法读取的目录/ FOO,那么显然/foo/bar/foo/bar/baz不会被任何转移。
斯特凡Chazelas

17

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

-q, --quiet                 suppress non-error messages

如果再次使用该-q标志运行rsync ,rsync可能仍然会失败,但是至少这次,所有导致您的问题的错误消息都不会被文件传输状态消息的各行掩盖。


2

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


我知道这很愚蠢,但是我什至走上了继续研究代码的道路,直到意识到自己犯了这个愚蠢的错误。谢谢!
rburhum
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.