자식 하드 링크-파일이 하드 링크라는 것을 알고 있습니까?


16

파일을 구성하기 위해 심볼릭 링크 대신 하드 링크를 사용하기 시작했습니다 ...

사진을 분류하고 인쇄 할 사진 등을 표시하기 위해 찍은 사진에 대해이 작업을 수행했습니다.

git을 사용하여 이미지를 백업하고 있으며 저장소의 크기가 약 1GB 증가함에 따라 git이 새 파일이라고 생각한 것 같습니다. git을 사용하여 파일 이름을 바꾸지 않으면 Git은 실제로 이름 바꾸기를 잘 감지하지만 하드 링크도 처리합니까?

월터


2
모든 일반 파일은 하드 링크입니다. 아마도 "여러 하드 링크가있는 파일"을 의미 했습니까?
Ignacio Vazquez-Abrams

그렇습니다.
Walter

1
내가 틀렸다면 나를 수정하지만 더 많은 트랙을 표시하지 content않습니까? 파일의 내용이 동일한 경우 중요한 이유는 무엇보다도 기술적 으로 동일한 파일입니다.
new123456

1
이것을 우연히 발견하는 사람들을 위해-대신 심볼릭 링크 사용을 고려하십시오. stackoverflow.com/q/954560/492
CAD bloke

태그 기반 파일 시스템을 원하는 것처럼 들립니다.
Nayuki

답변:


14

여러 링크 된 추적 파일은 각 링크가 정확히 동일한 얼룩 개체로 표시되므로 Git의 개체 저장소가 크게 커지지 않습니다. 그러나 링크가 끊어져 작업 트리가 커질 수 있습니다.

Git은 추적 된 작업 트리 파일이 동일한 파일에 대한 하드 링크인지 추적하지 않습니다.

Git은 경로 이름의 내용을 수정하거나 경로 이름의 디렉토리 항목을 삭제하는 것을 요구하지 않는 경우 다중 링크, 추적 및 작업 트리 파일 만 남겨 둡니다. 그러나 예를 들어 오래된 커밋 또는 브랜치를 체크 아웃 한 다음 정상적인 최신 브랜치 / 커밋으로 다시 전환하면 Git은 하드 링크를 "중단"합니다 (영향을받는 경로 이름을 새 링크로 바꿉니다). )를 곱한 상황을 다시 만드는 대신 파일).

다중 연결된 상태를 복구하기 위해 동일한 파일을 스캔하고 파일 중 하나에 다시 연결하는 프로그램을 작성할 수 있습니다. 모든 "링크"가 작업 트리 자체에 있지 않거나 적어도 쉽게 식별 할 수있는 "외부"위치에 있지 않은 경우 이러한 "재 링크"작업이 더 복잡 할 수 있습니다 (예 : 링크하는 경우 링크를 복구하기 어려울 수 있음) 홈 디렉토리의 모든“랜덤”파일을“백업”저장소로 가져오고 Git을 사용하여 작업 트리를 수정하십시오.

아이디어는 Git 메일 링리스트에 올라왔다 :


데비안 기반 리눅스의 경우, 이 링크 작업을 수행 할 수 있는 하드 링크 도구 ( packages.debian.org/search?keywords=hardlink )가 있습니다. 불행히도 그리 빠르지 않습니다
Daniel Alder

hardlink에 야간 작업으로 실행 합니다 /var/lib/jenkins.
Amedee Van Gasse
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.