テクノロジー · 実用ガイド

cp の「preserving times … Operation not permitted」はメタデータ契約から確認する

データ本体はコピー済みでも、一つのメタデータ更新が失敗している場合があります。実行ファイル、対象、最初に拒否された属性を保存し、時刻・所有者・モード・ACL・xattr の必要性を決めます。

バイトコピーとメタデータ忠実度を分ける図。
Watch at Ease オリジナルイラスト:必要属性を個別に宣言して試験します。 Watch at Ease

データ本体はコピー済みでも、一つのメタデータ更新が失敗している場合があります。実行ファイル、対象、最初に拒否された属性を保存し、時刻・所有者・モード・ACL・xattr の必要性を決めます。

データ書込みの成功は時刻、所有者、モード、ACL、セキュリティ文脈、拡張属性の保存を証明しません。

1. コピーと対象の証拠を固定

完全なコマンド、cp の実体と版、実効ユーザー、入出力、終了値、最初の未加工診断を保存し、対象が既存かと所有者を記録します。

すぐに sudo、唯一の対象の上書き、stderr 廃棄をしないでください。失敗属性が時刻、所有者、モード、文脈、xattr のどれか分からなくなります。

2. バイトと属性を別々に比較

非機密サンプルのハッシュまたはバイトを比較し、型、サイズ、所有者、群、モード、atime、mtime を時域と精度付きで機械可読に取得します。ACL、xattr、ラベルは用途が要求する場合だけ調べます。

要求・対応・観測の表を作ります。内容が一致しても mtime が新しいコピーは転送には十分でも、増分バックアップや再現可能ビルドには不十分です。

3. 権限と保存能力を分類

BusyBox と GNU は選択肢が異なるため実装を特定します。対象ファイルシステムとマウント条件を解決し、呼出者所有の使い捨てファイルで再現します。

新規対象だけ成功なら所有者や immutable を調べ、両方失敗なら保存能力、読取専用、ID マッピング、セキュリティ政策を調べます。sudo 成功は権限の手掛かりで、使用許可ではありません。

4. 宣言した最小の修正を選択

必要で対応する時刻は呼出者所有の新規物に設定するか、審査済みの権限を整えます。不要で非対応の属性だけを除外し、損失を記録します。複数属性が必要ならアーカイブやネイティブ機構を使います。

一つの未解明診断のために広範な chmod/chown、全体政策変更、再帰 sudo をしません。名前とバイトの到着は Unix 所有権の保存を意味しません。

5. 実際の目的に対して検証

代表サンプルで本来の手順を再実行し、対象を閉じて開き直した後に内容と必要属性を検証します。時域と時刻精度も比較します。

必要な表が通り、許容損失と新障害を区別する終了政策と復帰手順がある場合だけ受け入れます。対象が契約を満たせなければ容器か保存先を変更します。

対象所有者、呼出者権限、保存対応を分けるゲート。
Watch at Ease オリジナルイラスト:修正前に拒否された変更を特定します。 Watch at Ease