103.3標準
project以下をbackup/projectへ再帰的に複製する。
パーミッション、更新日時、シンボリックリンクなどを可能な範囲で保持する。
GNU cpを使う適切なコマンドはどれか。
× 不正解
cp -aはアーカイブモードで、再帰コピーと属性保持をまとめて指定する。バックアップ用の複製に適する。
詳細解説
正しい
cp -a project backup/アーカイブモードで再帰コピーし、属性とリンクを可能な範囲で保持する。
正解。-aはディレクトリ階層とリンク、主要属性を保持して複製する。
誤り
cp project backup/通常のcpはディレクトリを再帰コピーしない。
再帰指定がないためディレクトリをコピーできない。
誤り
cp -L project backup/-Lはシンボリックリンクを参照先としてたどる指定で、再帰指定もない。
-Lはリンクを参照先として扱い、リンク自体の保持に反する。
誤り
mv project backup/元を残す複製ではなく、projectを移動する。
複製ではなく移動なので元のprojectが残らない。
実際に確かめる
一時的な検証環境で実行できる例です。
LAB_DIR=$(mktemp -d)
mkdir -p "$LAB_DIR/project" "$LAB_DIR/backup"
printf data > "$LAB_DIR/project/file"
ln -s file "$LAB_DIR/project/link"
cp -a "$LAB_DIR/project" "$LAB_DIR/backup/"
test -L "$LAB_DIR/backup/project/link" && echo LINK_PRESERVED
rm -r "$LAB_DIR"期待される結果
LINK_PRESERVED理解のポイント
- -aは再帰コピーを含む
- 属性を可能な範囲で保持する
- シンボリックリンクをリンクとして扱う
確認時の注意
- 確認環境: GNU coreutils 9.x
基礎のおさらい
アーカイブモード
GNU cpでは-aが-dR --preserve=all相当として働く。
完全な保持の限界
所有権や拡張属性の保持可否は実行権限やファイルシステム機能にも依存する。
問題IDKP-103-044
確認環境GNU coreutils 9.x
最終技術確認2026-08-12
誤り・権利侵害を報告