scpの向きを逆に打って、新しいファイルを古いファイルで上書きしてしまった
症状(よく出るエラー)
リモートで編集したはずの設定ファイルをローカルに回収しようとして scp を実行。転送は成功と出るのに、開いてみると中身が編集前の古い内容に戻っている。エラーは一切出ない。
原因
scp はコピー元とコピー先を引数の順番だけで決める。scp local.conf user@host:/etc/app/ と scp user@host:/etc/app/local.conf . は動作が真逆で、向きを取り違えると手元の古いファイルがリモートの新しいファイルを黙って潰す。上書きの確認は一切聞かれないため、成功メッセージのまま最新版が消える。
直し方
実行前に「左が元・右が先」と声に出して読み、まず scp -n 相当の確認ができない分、cp と同じ感覚で慎重に順番を見る。事故直後なら、リモート側に .bak やエディタのバックアップ(file~ など)が残っていないか ls -la で探す。恒久対策として rsync -avn SRC DST のドライラン(-n)で転送方向と対象を先に確認してから -n を外す運用に切り替えると安全。