심볼릭 링크의 타임스탬프를 확인하는 방법은 무엇입니까?

심볼릭 링크의 타임스탬프를 확인하는 방법은 무엇입니까?

원본 파일보다 오래된 심볼릭 링크를 업데이트하기 위해 기존 명령을 사용할 수 있는 방법이 있습니까?

저는 학생들에게 특정 파일을 제공하기 위해 Seafile 서버(Dropbox와 유사)를 사용합니다. 그래서 디렉토리를 공유하고 파일에 대한 링크를 만들었습니다. Seafile이나 Dropbox는 링크에 신경 쓰지 않고 대신 실제 파일을 서버에 복사합니다.

문제는 실제 파일을 업데이트해도 링크 타임스탬프가 변경되지 않고 파일의 새 버전이 서버에 업로드되지 않는다는 것입니다.

나는 다음과 같은 간단한 테스트를 시도했습니다.

[ ./shared/the-symlink -ot ./actualfiles/pontedfile ] && touch -h ./shared/the-symlink

불행하게도 test링크를 역참조하고 파일의 타임스탬프를 자체와 비교하는 것은 물론 잘못된 것으로 판명됩니다.

또한 심볼릭 링크는 링크된 파일보다 최신 버전이어야 합니다. 동일한 타임스탬프로 설정할 필요는 없습니다.

test링크가 가리키는 파일 대신 링크의 타임스탬프를 확인 하는 방법이 있나요 ?

내가 피하려고 하는 다른 솔루션은 다음과 같습니다.

  • 링크 대신 파일을 복사하면 작동하지만 일반적으로 파일이 상당히 크기 때문에 너무 많은 디스크 공간을 소비해야 합니다.
  • touch모든 심볼릭 링크도 작동하지만 모든 파일은 서버에 계속해서 복사됩니다. ;(괜찮아요: 아래 편집 참조)

타임스탬프를 문자열로 변환하고 직접 비교하는 것보다 더 우아한 솔루션을 원합니다...

이 머리나에게는 해결책이 아닙니다.

편집하다:

이것은 질문에 대한 대답은 아니지만 내 문제에 대한 해결책입니다. touch -h *모든 심볼릭 링크 타임스탬프를 업데이트하세요. Seafile은 이러한 변화를 인식하고 조치를 취했습니다. 다행히 이제는 실제 파일 타임스탬프를 사용하여 변경된 파일만 다시 확인하고 업로드합니다.

편집 2:

작품을 이용한 솔루션 stat: stat -c "%Y".감사합니다스티브.

답변1

stat심볼릭 링크 자체의 타임스탬프를 제공합니다.

따라서 다음과 같은 것이 가능합니다.

[[ $(stat -c '%Y' b) -lt $(stat -c '%Y' a) ]] && touch .......

관련 정보