Rsyncエラー23:転送されなかったファイルを確認できますか?


32

走った sudo rsync -va --progress別の外付けドライブ上のフォルダに一つの外部ドライブのルートから。その理由は、ソースドライブにエラーの多いNTFSがあり、NTFSを修復するためにWindows PCにアクセスできないためです。

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の「ディスク使用量」は、ソースが上記のレポートの608ではなく、617億バイトであることを示しています。

質問:

  1. 詳細出力(ファイルリストの作成)の最初の部分は、Input/output error (5)コピーされないすべてのファイルを明確に示していますか?
  2. code 23を除くすべてのファイルという意味Input/output error (5)のものが正常にコピーされましたか?

1
おそらく役立つ:rsyncエラーメッセージは「rsync:」で始まるように見えるので、grep '^rsync: ' output役立つかもしれません。
バリーカーター

回答:


19

23 唯一の意味(マニュアルページから):

23エラーによる部分転送

転送できなかったすべてについて、エラーメッセージが表示されます。エラーメッセージはディレクトリのオープンまたは読み取りに関するものである可能性があるため、転送できなかったファイルごとにエラーメッセージが表示されるとは限らないことに注意してください。

ソースが変更されていない場合は、rsyncwith -nを再度実行して、実際に転送を実行せずに今回の転送内容を確認できます。

バイトの違いについて、rsyncファイルのサイズ(ファイルから読み取ることができるデータの量)を示します。よろしいですFinderあなたに教えてくれないディスク使用量を代わりに?

また、NTFSはデータを別のストリームまたはファイルの属性に保存でき、rsync通常はそれらを転送しません(認識しません)(また、多くのことを説明できます)。


転送されなかったすべてのデータ(破損していても)が最初にaとしてリストされていたとInput/output error (5)言っているのですか?
ミラー

バイトの違いに関して:はい、それは正しいです。rsyncのレポートとFinderの「ディスク使用量」の違いが90億バイトである理由について私は混乱していますが、私が言っInput/output error (5)たファイルは2〜3億バイトしか識別できません。説明できますか?
ミラー

1
@themirrorでは、1バイトのファイルを保存するためにディスク上にまだ数キロバイトが割り当てられている必要があります(echo > file; du -k fileソースファイルシステムでどれくらいかを確認してください。ただし、ntfsでは通常4kです)。rsyncサイズが1であることがわかりますが、Finderはそのファイルの4096を示す場合があります。
ステファンシャゼル

@themirror、最初のコメントについて、転送できなかったすべてのもの(ファイルの内容、代替ストリームに関する私の編集を参照)については、エラーが発生しますが、ディレクトリを読み取れない/ fooが、その後明らかに/foo/barし、/foo/bar/bazどちらかに転送されていません。
ステファンシャゼル

17

rsyncの-qフラグを使用して、rsyncの非エラー出力を黙らせることができます。

-q, --quiet                 suppress non-error messages

-qフラグを指定してrsyncを再度実行すると、rsyncは引き続き失敗する可能性がありますが、少なくとも今回は、問題の原因となっているエラーメッセージがファイル転送ステータスメッセージの行や行に埋もれることはありません。


2

Re:エラー23-このエラーが発生する最も一般的な理由は、rsyncソースに小さなタイプミスを入力することです。ソースコマンドを調べて、すべてがlsに対してチェックアウトされていることを確認し、余分なスペースや1-lの問題などの愚かな微妙なものを探します。


私はそれがばかげていることを知っていますが、この愚かな間違いを犯したことに気付くまで、コードを掘り続けるためにルートに行きました。ありがとうございました!
-rburhum
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.