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

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

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

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



답변

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

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

FreeBSD의 경우 :

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

그리고 OS X의 경우 :

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


답변

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

cp --preserve=timestamps source destination

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


답변

Unix 파일 시스템에는 액세스 시간 (atime), 수정 시간 (mtime) 및 inode 변경 시간 (ctime)이 세 번 있습니다. 터치 프로그램으로 액세스 시간과 수정 시간을 변경할 수 있습니다 (예 :

cp orig 사본
-r 원본 복사를 터치

그러나 inode 변경 시간은 변경할 수 없습니다.


답변

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


답변