마지막 수정 시간을 변경하지 않고 유닉스에서 파일을 복사하는 방법은 무엇입니까?


89

를 사용하여 일부 파일을 다른 곳으로 cp복사하면 복사 된 파일의 타임 스탬프가 복사 시간으로 설정됩니다.

이것을 피할 수있는 방법이 있습니까?

타임 스탬프를 변경하지 않고 파일을 복사해야합니다.

답변:


103

cp -p트릭을 수행합니다. Linux의 경우 :

-p 와 동일 --preserve=mode,ownership,timestamps

FreeBSD의 경우 :

-p cp가 사본에서 각 소스 파일의 다음 속성 인 수정 시간, 액세스 시간, 파일 플래그, 파일 모드, ACL, 사용자 ID 및 그룹 ID를 권한에 의해 허용 된대로 유지합니다.

그리고 OS X의 경우 :

-pcp가 권한에서 허용하는대로 수정 시간, 액세스 시간, 파일 플래그, 파일 모드, 사용자 ID 및 그룹 ID와 같이 사본에서 각 소스 파일의 다음 속성을 유지합니다. 리소스 포크를 포함한 액세스 제어 목록 (ACL) 및 확장 특성 (EA)도 보존됩니다.


25
cp -a도 알기 좋으며, -p뿐만 아니라 -R도 전체 디렉토리를 복사하고 -d는 링크를 유지합니다.
casualuser

2
GNU Coreutils를 사용하면 cp -p타임 스탬프뿐만 아니라 모드와 소유권 도 유지 되며 FreeBSD 에서는 수정 시간 외에 허용 된대로 액세스 시간, 파일 플래그, 파일 모드, ACL, 사용자 ID 및 그룹 ID도 보존됩니다. «및 OS X에서 추가로»자원 포크를 포함한 확장 된 속성«.
Stefan Schmidt

최신 OSX에서 cp -p는 여전히 소스 파일의 타임 스탬프를 터치합니다
afathman

15

GNU Coreutilscp 에서 사용할 때 사용자 아이디, 그룹 아이디 또는 파일 모드와 같은 속성이 아닌 타임 스탬프 만 보존하기 위해 보존 할 속성 목록을 명시 적으로 지정할 수있는 방법이 있습니다.--preserve

cp --preserve=timestamps source destination

이 구문은 다른 Unices에서 지원되지 않을 수도 있습니다. 대안은 대부분의 설치에서 사용할 수 있는 --times매개 변수 를 사용하는 것 rsync입니다.


4
정답입니다. 사용하는 -p것이 정답이 아닙니다. -p소유권 및 모드도 유지합니다. 원하지 않을 수도 있습니다. 질문하지 않았습니다.
bshea


0

최근에 비슷한 것을하지만 symlink를 대신 사용해야했습니다. 심볼릭 링크를 만들고 orignal 타임 스탬프를 유지하려면cp -ps src_file dst_symlink


한마디로 이것은 몇몇 독자에게는 유용 할 수 있으며, 그 결과 대부분 독자에게는 소음이 추가됩니다.
ndemou
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.