타임스탬프만 복사하는 방법 또는 "cp -p를 사용해야 하나요?"

타임스탬프만 복사하는 방법 또는 "cp -p를 사용해야 하나요?"

나는 어리석게도 많은 데이터를 복사해 사용했다 cp -r.

지금 보니 파일 수정 시간을 놓쳤다는 뜻이라는 걸 깨달았습니다. 나~해야 한다사용된 cp -rp.

내 디렉토리 구조와 파일은 변경되지 않았습니다. 지금 속성/타임스탬프를 복사할 수 있는 방법이 있습니까? 제 생각에는 rsync효과가 있을 것 같아요.

답변1

이것은 나에게 잘 작동합니다.

rsync -vrt --size-only /src /dest

/src올바른 타임스탬프가 있는 폴더이고 바람직합니다. /dest폴더 파일은 /src 폴더 파일의 수정 시간을 가져옵니다. 생성 시간은 동일하게 유지됩니다.

--size-only명령은 크기에 따라 파일만 비교하므로 기본적으로 아무런 차이가 없습니다. -t타임스탬프에 복사합니다.

답변2

find를 사용하여 이 작업을 수행할 수 있습니다 touch.

cd destination
find -depth -exec touch -r /path/to/source/{} {} \;

-depth옵션은 디렉터리 내용이 설정된 후 디렉터리가 설정되는 시기를 예약합니다. 이는 인수의 하위 문자열일 때 find보간한다고 가정합니다. {}그렇지 않은 경우 쉘을 호출하십시오.

find -depth -exec sh -c 'for x; do touch -r "$0/$x" "$x"' /path/to/source {} +

액세스 시간을 복사하려면 touch -a …다음도 실행하세요.

find -depth -exec touch -a -r /path/to/source/{} {} \; -exec touch -r /path/to/source/{} {} \;

관련 정보