2012-02-15 2 views
1

폴더에 파일이 있습니다. 시스템에서 실행되는 응용 프로그램에서 발생하기 때문에이 파일 (생성 및 업데이트 방법)에 대해 알지 못합니다 그 중 제가 소스 코드를 가지고 있지 않습니다.OS X에서 예상대로 작동하지 않는 파일에 대한 하드 링크

파일 형식은 명확 json 내가 성공적으로 (쉘 명령 ln file hardLinkToFile을 사용하여) 그에게 하드 링크를 생성하고 다른 디렉토리에 배치.
이 시점에서 "2"파일을 확인하고 예상 한 것과 정확히 동일하지만 응용 프로그램에서 원본 파일을 업데이트하는 작업을 수행하면 하드 링크가 업데이트되지 않습니다.

이 문제를 어떻게 해결할 수 있습니까?

UPDATE : 모두 블라드 LazarenkoMVDS에 의해 지적 파일이 아마로 삭제하고 새로운 하나를 만들어, 내가 하드 링크 하나에 대한 해결책 상당 얻기 위해 할 수있는 일이있다 나는 처음에 대략 생각했다?

+1

심볼릭 링크를 사용하십시오. 응용 프로그램은 파일을 제거하고 새 파일을 만듭니다. 이 응용 프로그램을 시작하기 전후에'stat -f % l filename'을 사용하여 파일의 링크 수를 확인하십시오. – mvds

답변

2

하드 링크가 업데이트되지 않으면 응용 프로그램이 이전 파일을 제거하고 새 파일을 만드는 것입니다. 따라서 여전히 이전 파일의 하드 카피가 있지만 새 파일은 완전히 다른 inode를 갖지만 경로는 여전히 동일합니다. 해당 파일의 내용을 직접 변경하여 간단히 확인할 수 있습니다. 링크가 업데이트되어야합니다.

+0

나는 대답을 업데이트했고, 네가 맞다고 생각했다. (나는 처음에는 똑같은 생각으로 여기에 확인을 요청했다.) ... 이제이 이상한 행동에 대한 해결 방법을 찾고있다. – Francesco

1

TextEdit에서 동일한 동작이 발생하지만 TextMate에서는 발생하지 않습니다. 이 문제는 OS X Lions 문서 아키텍처에 내장 된 수정 제어 때문인 것으로 생각됩니다. TextEdit은 버전 관리를 사용하지만 TextMate는 버전 관리를 사용하지 않습니다. 대부분이 함수는 @Vlad Lazarenko에 설명 된대로 파일을 변경하는 대신 파일을 대체합니다.

+0

나는 이것이 생각하지 않는다. 수정 제어에 대해서, 나는 직접적으로이 파일들에 대해 작업하고 있지 않다. 다른 응용 프로그램에 의해 (직접적으로) 생성되지 않았다. – Francesco

+0

나를 위해 그것은 숭고한 텍스트로만 작동하지만 텍스트로는 편집하지 않는다. – Nav

0

나는 조금 늦은 것 같아 ... 어쨌든, 실수로 파일의 기본 응용 프로그램을 변경하면 하드 링크가 원본 파일과 구분됩니다. 모두 변경을 클릭하고 해당 특정 파일과 관련이 없더라도.

1

@Vlad and Francesco. 그것은 정말로이 방법입니다. 나는 vi가 inode를 변경하지 않고 src와 dest 파일이 둘 다 변경된다는 것을 확인했다. 케이트 에디터는 그렇지 않습니다. src 파일에서 변경 한 사항이 dest 파일에도없는 이유를 이해하는 데 화가났습니다. 내가 언급 한 각 편집기로 그 중 하나를 편집하기 전에 이것을 ls -li srcfile destfile 명령으로 쉽게 확인할 수 있습니다. 그런데 하드 링크가 응용 프로그램에 종속된다는 것은 좋지 않습니다.

+0

"하드 링크가 애플리케이션에 종속적이라는 것은 좋지 않다." - 아멘. – dave

관련 문제