テクノロジー · 実用ガイド
rsyncがコード23で終了? 権限変更前に失敗した対象を特定する
コード23は少なくとも一つの転送エラーを示すだけです。先行エラーを対象、側、操作、実効ユーザーに結び付け、予定した集合の到着を証明します。

最後のコード23行は要約です。権限、除外、rsyncオプションを変える前に完全な出力を保存し、最初の具体的な失敗を見つけます。
失敗対象、senderまたはreceiver/generator、ファイル操作、errno、実効ユーザーを一つの台帳にします。その境界だけを直し、実コマンドと予定集合を再検証します。
正確な実行と完全なログを保存
両端、完全なコマンド、rsync版、remote user、作業ディレクトリ、exit statusを記録します。stdout/stderrを最初から保存するかclient logを使います。末尾の23は要約です。
sudo、chmod -R 777、広い除外、ignoreから始めません。対象判明前にidentityやscopeを変えてしまいます。
最初の具体的エラーを分類
各エラーについて正確なpath、sender/receiver/generator、open/stat/mkdir/write/rename/metadataなどのoperation、errno文字列を記録します。
remote認証、protocol、コード24は別分岐です。permission行とfailed verification行は別のtestとrepairが必要です。
同じアカウントで対象を再現
sourceでは各親のtraverse、lookup、link target、readを確認します。destinationでは一時名でtraverse、create、write、close、rename、必要なmetadataを確認します。
rsyncと同じlocal/remote account、mount、container、service contextを使います。記録したoperationに必要なspace、inode、quota、read-only、ACL、mappingだけを調べます。
証明した境界だけを修復
再現したowner、ACL、mount、capacity、missing path、option mismatchを最小限直します。除外は欠落が意図でtransfer contractを明示的に変える場合だけです。
version固有のverification bugならsupported fixed buildか限定optionで比較します。一般のpermission回避策にはしません。
予定集合の到着を証明
修正後に同じ意図の実transferを行いcode 0を要求します。続けてdry-runとitemized changesで予期しない残作業を調べ、必要な場合だけchecksumの追加I/Oを使います。
dry-runはデータを送らず同じsystem call失敗を起こさない場合があるため代替ではありません。実行成功とmanifest無欠落の両方で閉じます。
