想定違い:無人はターミナル流用ではない
対話成功・デーモン失敗。 ログインシェルが足す PATH、ssh-agent のソケット、触覚的な鍵アクセス。plist の Job と cron 行は、明示的に埋めない限り、ほぼゼロからです。遠隔 Mac の認可は「すぐ Permission denied」ではなく、TCP 後の列挙かユーザ認可で固まる、という併存典型があります。
大木での openrsync 留まり。 多ファイル化が進行したあと、ファイル境で動き止まる報告群です。帯域枯渇は通常もっと非連続的で、満盤は遅延うちに I/O エラーを上げることが多いです。大木は複数独立ログのジョブ分割も含め、実装層整列と併用します。
sftp -b 無限待ち。 非対話は固着。パス誤り・権限は stderr 取りと冗長ログ前提で修正。
原子的配布からの分離危険。 同期直しだけ先行は中間露出。ステージ・和検・symlink を一連合格に。
層分け:環境層とプロトコル層
L0 は、同一ユーザ文脈で BatchMode=yes の ssh を通す所までです。ここが詰まる段階は rsync 手前です。L1 はファイル一覧構築の足止めと、1 要素のバイト中の足止めの分離です。L2 は openrsync と遠端 rsync 実装の相性、--rsync-path や --protocol=28 といった、実装層合わせの話です。これらの語彙を混ぜないのが、夜間当番の意思決定を速くします。
plist では UserName、WorkingDirectory、標準入出力、Daemon/Agent の鍵束縛を明文化します。無人向けは 専用 CI 鍵(無パスまたはエージェント前注入)を既定にし、遠端はアップロード限定アカウントへ。自己ホストランナーは PATH とホームがさらに異なるため、ラッパ先頭で id と pwd を残します。多チーム共有マシンでは再試行嵐と同時枠を設計に入れ、明示 PATH とラッパ権限の組を監査可能にします。
可引用:留まり秒数を「なんとなく」にしない
先に 24 時間分の基線を取ります。起終・件数・バイト・終了コードと前進ゼロ秒を記録し、約 300 秒超は timeout と通知に繋ぎます。RTT/損失と相関し、L0 と L2 の取り違えを防ぎます。CI 成功は運搬・チェックサム・原子切替の三段階、再試行は率。点リリースごとに再ベース、四半末は負荷演習。段取り: plist、BatchMode、rsync、NAT。混在 arch は --rsync-path 分岐。名寄せはラベルとログ系統。二重スタック/企業プロキシは別 L0。
行動表:最初の一押し
| 症候 | 高確度原因 | 最優先 | リスク |
|---|---|---|---|
| デーモンだけ | PATH/エージェント/TTY | PATH 明示と鍵前載せ、BatchMode 早期失敗 | 同機多 plist 干渉:ラベル単位分離 |
| 木途中 | openrsync 対向偏り | --protocol=28、GNU へ --rsync-path | 遠端誤路は即失敗:stg で |
| SFTP 黙着 | 非対話プロンプト | -v 分割、明示 bye | 冗長ログ:保管先暗号化 |
| 小更新の後揺れ | 同梱工具の漂い | 二進の再釘付、基線回帰 | 二系統は当面サ面増 |
7 手順
#!/bin/bash
set -euo pipefail
export PATH="/usr/local/bin:/opt/homebrew/bin:/usr/bin:/bin:/usr/sbin:/sbin"
export RSYNC_RSH="ssh -o BatchMode=yes -o ServerAliveInterval=30"
/usr/bin/rsync -av --protocol=28 --rsync-path=/opt/homebrew/bin/rsync \
./artifacts/ "[email protected]:/data/inbox/staging/"
1: plist 文脈で id、pwd、マスク付き env です。
2: 先に ssh -o BatchMode=yes -o ConnectTimeout=10。
3: --rsync-path 固定と版メモ。openrsync 併用時は --protocol=28。
4: 専用 CI か管理 ssh-agent。対話パスは禁止。
5: timeout と有界再試行、回数列を出す。
6: ステージ dry-run 後、リリース手順の原子性へ接続。
7: 月次再試行率、四半期災害注入。ラッパを git 管理に載せ、非対話鍵導体とログ回転を定例化。各フラグに採用理由 1 行。混在 arch は --rsync-path 分岐。L7/二重スタックは別プログラム。
関連
同時枠 concurrent SFTP、ControlMaster、chroot、多チーム、トップ。自前はハードと plist 風化を同時背負い、既定観測の入口の方が当番圧下では MTTR 短い場合があります。
FAQ
系統 rsync 全面廃棄が必要か
全面ではない。小さな手元は系統利用でもよい。遠距離・大規模・無人に GNU 釘付と文書上の根拠が妥当です。閾件数の一次データを残してください。
cron は今もか
Apple 推奨は launchd です。残すなら、最小環境を既定と自覚し、plist と同等の明示を。
要約: 明示 PATH と ssh-agent、BatchMode 先行、rsync 整合、timeout、原子的手順。限界は帯域・二重スタック。SFTPMAC は観測可能な入口面、パイプ所有は自社のまま。
