
Git은 모든 파일의 계산된 해시를 기반으로 저장소에 콘텐츠를 고유하게 저장합니다. 내 디렉토리에 동일한 파일의 복사본이 두 개 있으면 git은 실제로 해당 파일을 한 번만 저장합니다.
이와 동일한 개념이 운영 체제 수준에서 일종의 파일 시스템으로 구현되었는지 궁금합니다.
파일 시스템이 기본적으로 이런 방식으로 작동한다면 도움이 될 것입니다.DLL 지옥문제. 기본적으로 사용자를 대신하여 자동으로 심볼릭 링크됩니다. 모든 애플리케이션은 모든 종속성을 포함하고 추가 저장 비용 없이 디렉터리에 패키지(예: jar)될 수 있습니다.
Ruby 애호가들은 라이브러리를 Rubygems로 게시하여 공유합니다. 그럼에도 불구하고 보석을 공유하려는 이러한 노력은 배포의 악몽을 가져왔습니다.모든 것을 공급하세요이러한 악몽을 피하기 위해 모든 종속성을 로컬 폴더에 복사하는 개념입니다.
답변1
당신이 찾고 있는 것은 "중복 제거"라고 합니다. 일반적으로 전문 스토리지 제품 공급업체에서 구현하지만,ZFS 파일 시스템구현하기도 합니다.대부분의 Unix 기반 운영 체제ZFS를 사용할 수 있으므로 가장 먼저 살펴보는 곳으로 ZFS를 추천합니다.
답변2
Network Appliance, Inc.는 수년 동안 이와 같은 스토리지 기능을 제공해 왔으며 실제로 ZFS 파일 시스템에 대해 Sun Microsystems에 불만 사항을 제출했으며 Aaron Miller가 수락한 답변에서 언급한 내용을 수행합니다. 그만한 가치가 있는 만큼, 불만 사항은 약 3년 후에 Oracle과 해결되었습니다.
저는 이것을 2000년부터 기업 솔루션으로 사용해왔는데 잘 작동합니다. 첫 번째 '복사' 이후 저장 비용은 파일이 변경된 후에 발생합니다. 그렇지 않으면 '복사본'이 많아지면 네임스페이스가 약간만 증가합니다.
나는 이것이 "운영 체제 수준"에 대한 질문에 대답하는 것이 아니라 "파일 시스템 수준"에 대한 대답이라고 생각합니다.
답변3
새로운 Apple 파일 시스템(APFS, 이미 다른 AFS가 있었기 때문에 그렇게 명명됨)은 이러한 "자동 하드링크"/"중복 제거" 마법을 수행합니다. macOS 10.13은 iOS 11과 마찬가지로 기본적으로(대부분의 Mac에서) 이를 지원합니다.
즉, "git like"로 만드는 것만으로는 충분하지 않다고 생각합니다. 왜냐하면 "git like"라면 주어진 시점에서 내 디렉토리 구조 상태에 대한 암호화 체크섬도 갖게 되기 때문입니다. 나는 아무도 내 컴퓨터를 해킹하거나 내 시스템 디렉토리를 수정하지 않았다고 확신할 수 있었습니다. 실제로 저는 git repos를 사용하여 Mac에서 Apache 구성 파일, LaunchDaemons, LaunchAgents 및 기타 몇 가지 중요한 시스템 디렉토리를 추적합니다. 이렇게 하면 소프트웨어를 설치하거나 서버를 잠시 실행할 때 어떤 것이 있는지 확인할 수 있습니다. 망쳐버렸습니다.
APFS는 또한 한동안 사용되지 않은 항목을 파일 시스템에서 클라우드로 오프로드하는 기능을 훌륭하게 지원하지만 여전히 거기에 있는 것처럼 보이고 필요에 따라 클라우드에서 다시 채워집니다.
당신은 언제든지 Hackintosh를 만들고 그것을 가지고 놀 수 있습니다. BSD는 재미있습니다.