그것은 저장되지 것 에 해당 파일. 파일 시스템에 저장되며 모든 매개 변수는 하나씩 수동으로 복사됩니다 (일부는 복사 할 수 없지만).
즉, 대부분의 운영 체제에는 실제로 "메타 데이터가있는 파일 복사"호출이 없습니다. 파일 복사 프로그램은이라는 이름의 새 파일을 만들고 foobar.py
전체 0 바이트의 데이터를 복사 한 다음 utime () 또는 SetFileTime () 을 사용하여 수정 시간을 원본과 동일하게 만듭니다. 마찬가지로 chmod ()를 사용하여 새로 설정하거나 POSIX ACL 속성을 복사하여 파일 권한을 "복사"합니다.
일부 메타 데이터는 복사되지 않습니다. 소유권을 설정하려면 루트 권한이 필요하므로 다른 사람의 파일 사본이 귀하의 소유이며 디스크 할당량을 차지 합니다 . ctime (속성 변경 시간)은 Unixes에서 수동으로 설정할 수 없습니다. btime (출생 / 생성 시간)도 대개 복사되지 않습니다.
cp -a foo bar
메타 데이터를 복사하는 것과 비교 cp foo bar
하지 않는 것을 비교하십시오 .
$ strace -v cp foo 바
…
open ( "foo", O_RDONLY) = 3
open ( "bar", O_WRONLY | O_TRUNC) = 4
읽기 (3, "test \ n", 131072) = 5
쓰기 (4, "test \ n", 5) = 5
읽기 (3, "", 131072) = 0
닫기 (4) = 0
닫기 (3) = 0
…
$ strace -v cp -a foo 바
…
-원본 메타 데이터가 검색됩니다
lstat ( "foo", {st_dev = makedev (254, 0), st_ino = 60569468, st_mode = S_IFREG | 0644,
st_nlink = 1, st_uid = 1000, st_gid = 1000, st_blksize = 4096, st_blocks = 8,
st_size = 5, st_atime = 2016-12-28T09 : 16 : 59 + 0200.879714332,
st_mtime = 2016-12-28T09 : 16 : 55 + 0200.816363098,
st_ctime = 2016-12-28T09 : 16 : 55 + 0200.816363098}) = 0
-데이터가 복사됩니다
open ( "foo", O_RDONLY | O_NOFOLLOW) = 3
open ( "bar", O_WRONLY | O_TRUNC) = 4
읽기 (3, "test \ n", 131072) = 5
쓰기 (4, "test \ n", 5) = 5
읽기 (3, "", 131072) = 0
-수정 시간이 복사됩니다
utimensat (4, NULL, [{tv_sec = 1482909419, tv_nsec = 879714332},
{tv_sec = 1482909415, tv_nsec = 816363098}], 0) = 0
-소유권이 복사됩니다 ( 'sudo [strace] cp'로만)
fchown (4, 1000, 1000) = 0
-확장 속성이 복사 됨 (xdg.origin.url은 브라우저, wget에 의해 설정 됨)
flistxattr (3, NULL, 0) = 0
flistxattr (3, "user.xdg.origin.url \ 0", 20) = 20
fgetxattr (3, "user.xdg.origin.url", "https://superuser.com/", 22) = 22
fsetxattr (4, "user.xdg.origin.url", "https://superuser.com/", 22, 0) = 0
-POSIX ACL이 없으므로 기본 ACL은 st_mode에서 빌드됩니다.
-(이 경우 간단한 fchmod ()도 작동합니다)
fgetxattr (3, "system.posix_acl_access", 0x7ffc87a50be0, 132) = -1 ENODATA (사용 가능한 데이터 없음)
fsetxattr (4, "system.posix_acl_access", "\ 2 \ 0 \ 0 \ 0 \ 1 \ 0 \ 6 \ 0 \ 377 \ 377 \ 377 \ 377 \ 4 \ 0 \ 4 \ 0 \ 377 \ 377 \ 377 \ 377 \ 0 \ 4 \ 0 \ 377 \ 377 \ 377 \ 377 ", 28, 0) = 0
닫기 (4) = 0
닫기 (3) = 0
…