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 등 외. 소스 파일을 기준으로 설정하는 것이 아니고, 새로 생성된 파일과 동일하게 설정합니다. (따라서 권한은 현재 시간 기준 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.

이는 이 플래그를 사용하는 것 이외의 다른 방법으로 확장 속성이 유지되도록 지정하지 않습니다.

관련 정보