デフォルトでは、保存されているファイルメタデータ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
なく、現在のシステム時刻からのものであることがわかります。file2
file1
ターゲットファイルがない場合は同様のテストを実行できますが、このテストは実際にポイントをより明確に示しています。実際の状況のみコンテンツオプションを指定しないと、ファイルの内容がコピーされます。 ファイルの所有権、権限、ACL、mtimeなど。ソースファイルを基準に設定するのではなく、新しく作成されたファイルと同じに設定します。 (したがって、権限は現在の時間基準umask
、mtime
プロセスの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.
これは、このフラグを使用する以外の方法で拡張属性を保持することを指定しません。