GN⁺: 홈 디렉토리 구조화를 위한 팁 (2023)
(unixdigest.com)홈 디렉토리 구조 팁
- 디렉토리 구조화 또는 정리는 다른 것들의 구조화나 정리와 크게 다르지 않으며, 본인에게 가장 이치에 맞는 방식으로 하는 것이 핵심임
- 조직을 다룰 때는 매우 빠르게 통제 불능 상태가 될 수 있음
- 정리의 주된 목적은 효율성이며, 찾고자 하는 것을 쉽고 빠르게 찾고, 저장해야 할 것을 쉽고 빠르게 저장할 수 있어야 함
숨겨진 기본 파일과 디렉토리
- 내 홈 디렉토리에는
.config
,.aliases
,.profile
,.gnupg
,.mozilla
등 현대 유닉스 운영체제의 일부인 모든 기본 숨김 파일들이 있음 - 모든 애플리케이션이 XDG_CONFIG_HOME을 존중하기를 선호하지만, 이를 가지고 너무 간섭하거나 신경쓰지는 않음
- 과거에는 Git으로 $HOME을 유지했으며, Dotfiles를 구성하는 훌륭한 방법임
- 변경 이력을 유지하기 위해 여전히 모든 Dotfiles을 Git에 넣지만, 사용하는 다양한 시스템에서 동일하게 작동하는 Dotfiles만 그대로 둠
- 설정별 Dotfiles은 "dotfiles" 디렉토리에 보관하고 심볼릭 링크를 사용함
일반 파일 및 디렉토리 구성
- 일반 파일과 디렉토리는 주로 "카테고리"와 "날짜"의 두 가지 방법으로 구성함
- 기본 디렉토리 구조:
-
bin
-
data
-
edata
-
mnt
-
usr/dotfiles
-
-
Desktop
과Downloads
디렉토리는 그대로 둠 (대부분의 애플리케이션이 강요하는 것 같아서) -
bin
디렉토리에는 쉘 스크립트와 개인 바이너리 실행 파일을 보관함 (패키지 관리자를 통해 설치된 것은 제외) -
mnt
디렉토리는 SD 카드, USB 디스크, 홈랩에서 사용하는 공유 스토리지 등 다양한 마운트 지점에 사용함 - 자동 마운트는 절대 하지 않으며, 마운트용 쉘 스크립트를 사용함
-
usr/dotfiles
디렉토리는.aliases
와 같은 일반 Dotfiles와 함께 Git으로 관리되며,dotfiles
디렉토리의 관련 파일에 대한 심볼릭 링크를 사용함
데이터 디렉토리 구성
-
data
와edata
디렉토리는 모든 자료를 보관하는 두 개의 주요 디렉토리임 - 이 두 디렉토리는 루트 설치와 별개로 디스크 미러링 풀에서 실행되는 ZFS 데이터 세트임
- ZFS를 활용하여 스냅샷과 ZFS 전송 및 수신을 정기적으로 사용하여 네트워크 스토리지에 쉽게 백업함
-
data
와edata
의 차이점은edata
가 ZFS 기본 암호화 데이터 세트라는 점임 - 암호화는 프라이버시에 좋지만 이미 복잡한 파일 시스템 계층 위에 놓는 끔찍한 복잡성 계층이며, ZFS 암호화에는 버그가 있음
- 중요한 데이터는 항상 여러 다른 저장 솔루션과 위치에 백업할 것을 강력히 권장함
- 클라우드 스토리지는 중요한 것에는 사용하지 않음
추가 팁
- 파일 및 디렉토리 이름 지정에 대한 기본 규칙은 이름만 보고 무엇인지 쉽게 식별할 수 있어야 한다는 것임
- 파일을 열어보지 않고는 파일이 무엇에 관한 것인지 알 수 없다면, 즉시 파일을 열어 보고 다음에 파일 이름을 볼 때 더 의미 있는 이름으로 바꾸어야 함
- 파일과 디렉토리를 정리하지 않고 방치하면 나중에 수정하기가 매우 어려워짐
- 파일을 열어보지 않고도 파일 내용을 파악할 수 있도록 필요할 때마다 긴 설명이 포함된 파일 이름을 사용함
GN⁺의 의견
-
이 기사는 디렉토리 구조를 정리하고 구성하는 방법에 대해 실용적인 팁을 제공하고 있음. 특히 ZFS 데이터세트를 활용하여 암호화된 디렉토리와 암호화되지 않은 디렉토리로 나누어 관리하는 방법이 흥미로움.
-
개인적으로 중요한 데이터를 암호화하여 보관하는 것이 좋다고 생각함. 하지만 암호화로 인한 성능 저하나 복잡성 증가 등의 단점도 있기에, 상황에 맞게 선택적으로 사용하는 것이 좋아 보임.
-
또한 암호화된 데이터에 대한 접근 방법을 가족들과 공유해 두는 것도 중요한 포인트라고 봄. 사고 등으로 본인이 접근할 수 없게 되더라도 데이터를 잃지 않도록 하는 것이 필요함.
-
개인 데이터 관리를 위해서는 저자처럼 체계적인 백업 전략을 세우는 것이 매우 중요함. 321 백업 규칙을 따르되, 클라우드 스토리지 보다는 물리적으로 분산된 로컬 저장소를 활용하는 것도 좋은 방법으로 보임.
-
개인 데이터 정리에 유용한 오픈소스 도구로는 Syncthing이나 Nextcloud 등이 있음. 이런 도구들을 잘 활용한다면 체계적이고 안전한 개인 데이터 관리가 가능할 것으로 보임.
Hacker News 의견
다음은 해커뉴스 댓글들을 요약한 내용임:
- 홈 디렉토리가 애플리케이션들로 인해 어지럽혀지는 것에 대한 불만이 있음. 특히 Go 모듈의 기본 디렉토리인
~/go
가 문제라고 지적됨.GOPATH
설정으로 해결할 수 있지만 좋지 않은 기본값이라는 의견임. -
xdg-ninja
라는 도구를 사용하면 대부분의 애플리케이션이 XDG 표준을 따르도록 설정할 수 있어 홈 디렉토리 정리에 도움이 됨. -
.config
폴더에 애플리케이션들이 세션 데이터를 기가바이트 단위로 저장해 백업 시 어려움을 겪음. 설정과 세션 데이터는 분리되어야 한다는 의견임. - 개인마다 파일 구조에 대한 선호도가 다름. 어떤 이는 홈 디렉토리를 거의 비우고 클라우드 스토리지나 별도 파티션을 사용하기도 함. SSH 키를 패스워드 관리자에 저장하는 것도 방법이 될 수 있음.
- 사진은 EXIF 키워드로 분류하는 것이 중복 문제를 피할 수 있는 좋은 방법임. 문서 파일명은
날짜-설명.txt
또는키워드-제목-날짜.txt
형식을 사용할 수 있음. - GUI용 폴더명은 대문자로, CLI용은 소문자로 구분하는 것이 좋음.
~/dotfiles
는 도트파일을 관리하는 Git 저장소로 사용하고, 홈 디렉토리에 심볼릭 링크를 만드는 것이 편리함. -
~/projects
는 프로젝트별로 하위 디렉토리를 만들어 관리하고,~/tmp
는 임시 파일을 저장하는 공간으로 활용할 수 있음. 웹사이트나 마크다운으로 노트를 정리하는 것도 좋은 방법임. - 많은 디렉토리 이름이 'D'로 시작해서 혼란스러울 수 있음. 연도별, 날짜별로 프로젝트 폴더를 만들어 한 단계 깊이로만 중첩하는 것이 탐색하기 쉬움.
- 파일명과 디렉토리명에는 언더스코어 대신 하이픈을 사용하는 것이 검색 엔진 최적화에 유리하고 터미널에서 다루기에도 편리함.
- 백업은 Time Machine, Backblaze, iCloud 등 여러 서비스를 함께 사용하고, S3에 압축 파일로 보관하는 것도 좋은 방법이 될 수 있음.