cpはデフォルトでファイルのどのメタデータを保持しますか?

cpはデフォルトでファイルのどのメタデータを保持しますか?

デフォルトでは、保存されているファイルメタデータcpとそれ以外のファイルメタデータは何ですか?たとえば、私が正しい場合は、修正時間、アクセスリストは保存され、他のメタデータ(他のタイムスタンプなど...)についても知りたいです。

私はcoreutilsのマニュアルを探していますが、答えが見つかりませんでした。

ベストアンサー1

数ヶ月前テストしました。cpターゲットファイルがすでに存在する場合の動作:

$ ls -li
total 12
913966 -rw-rw-r-- 1 vagrant vagrant 30 Dec 16 20:26 file1
913965 -rwxrw---- 2 pete    vagrant 39 Dec 16 20:35 file2
913965 -rwxrw---- 2 pete    vagrant 39 Dec 16 20:35 hardlinktofile2
$ cat file1
This is the contents of file1
$ cat file2
This is the original contents of file2
$ cp file1 file2
$ ls -li
total 12
913966 -rw-rw-r-- 1 vagrant vagrant 30 Dec 16 20:26 file1
913965 -rwxrw---- 2 pete    vagrant 30 Dec 16 20:37 file2
913965 -rwxrw---- 2 pete    vagrant 30 Dec 16 20:37 hardlinktofile2
$ cat file1
This is the contents of file1
$ cat file2
This is the contents of file1
$ 

ご覧のとおり、ターゲットファイルは所定の場所に上書きされます。みんなその権限、所有権、属性などはハードリンクまで保存されます。ソースファイルはどのような方法でも影響を与えません。

mtimeデフォルトのままにしておくことは意味がなく、真でもありません。ただし、newは現在のシステム時刻からのものではmtimeなく、現在のシステム時刻からのものであることがわかります。file2file1

ターゲットファイルがない場合は同様のテストを実行できますが、このテストは実際にポイントをより明確に示しています。実際の状況のみコンテンツオプションを指定しないと、ファイルの内容がコピーされます。 ファイルの所有権、権限、ACL、mtimeなど。ソースファイルを基準に設定するのではなく、新しく作成されたファイルと同じに設定します。 (したがって、権限は現在の時間基準umaskmtimeプロセスのEUID基準の所有権などに基づいていますcp。)

具体的ですが、一般的な例外があります。:

[--preserve=] オプションがない場合、権限は既存のターゲットファイルは変更されていません。各新しいファイルは、生成モードで set-user-ID、set-group-ID、および固定ビットを引いた対応するソースファイルのパターンを使用して生成されます。 (これにより、オペレーティングシステムはumaskまたはデフォルトのACLを適用してより制限的なファイルモードになることができます。)


によるとinfo coreutils 'cp invocation'

`xattr'
      Preserve extended attributes if `cp' is built with xattr
      support, and xattrs are supported and enabled on your file
      system.  If SELinux context and/or ACLs are implemented using
      xattrs, they are preserved by this option as well.

これは、このフラグを使用する以外の方法で拡張属性を保持することを指定しません。

おすすめ記事