103.3基礎
source.confをbackup/source.confへコピーする。
コピー先が存在する場合は、コピー元の更新日時が新しいときだけ上書きする。
GNU cpを使う適切なコマンドはどれか。
× 不正解
cp -uはコピー先がない場合、またはコピー元の更新日時が新しい場合にコピーする。差分的な更新に使える。
詳細解説
誤り
cp -f source.conf backup/source.conf更新日時を比較せず、必要なら既存のコピー先を除去して上書きする。
-fは時刻を比較せず上書きを試みる。
誤り
cp -n source.conf backup/source.confコピー先が存在すれば、古い場合でも常に上書きしない。
-nはコピー先が古くても存在するだけで処理を止める。
正しい
cp -u source.conf backup/source.confコピー先がない場合、またはコピー元の方が新しい場合だけコピーする。
正解。コピー元が新しい場合だけ既存のコピー先を更新する。
誤り
cp -i source.conf backup/source.conf上書き前に確認するが、更新日時による自動判定ではない。
対話入力が必要で、自動的な更新日時判定ではない。
実際に確かめる
一時的な検証環境で実行できる例です。
LAB_DIR=$(mktemp -d)
mkdir "$LAB_DIR/backup"
printf old > "$LAB_DIR/backup/source.conf"
sleep 1
printf new > "$LAB_DIR/source.conf"
cp -u "$LAB_DIR/source.conf" "$LAB_DIR/backup/source.conf"
cat "$LAB_DIR/backup/source.conf"
rm -r "$LAB_DIR"期待される結果
new理解のポイント
- -uは更新日時を比較する
- -nは存在だけで上書きを止める
- -iは対話確認を行う
確認時の注意
- 確認環境: GNU coreutils 9.x
- GNU coreutilsのcpを前提とする。
基礎のおさらい
更新条件
-uは定期コピーで不要な上書きを減らせるが、内容差そのものは比較しない。
同時刻
同じ更新日時でもサイズが異なる場合などの詳細はcoreutilsのVersionと--update方式を確認する。
問題IDKP-103-045
確認環境GNU coreutils 9.x
最終技術確認2026-08-12
誤り・権利侵害を報告