리눅스 서버를 많이 다뤄 보면서, 그만큼 `tar` 확장자를 가진 파일들도 자주 접해 보았다.
하지만 여태 나는 그저,
리눅스에서 역사적으로 자주 쓰는 하나의 압축 포맷이구나.
라고만 생각하고, 깊게 짚어보지 않았다.
그리고, 리눅스 서버에서 이번에 zip 압축을 해제하기 위해
unzip 패키지를 설치하면서,
도대체 왜 리눅스에서는 zip을 안쓰고 tar같은걸 쓰는걸까..
이런 생각이 들어, 찾아보게 되었다.
tar는 압축이 아니라 아카이브!
가장 크게 오해하고 있었던 내용이다.
tar 형식은 압축이 아닌, 아카이브 포맷이다.
그저, 파일들을 한 데 묶어주는 역할을 할 뿐이었다.
이름부터가 tape archive 의 약자로서,
자기테이프 백업을 위한 포맷이라고 한다.
메타데이터 및 소유권이 유지된다.
리눅스에서 tar 아카이브는 한 가지 더 큰 장점을 가진다.
퍼미션이라던지 메타데이터가 보존된다는 것이다.
리눅스에서 퍼미션은 특히 더욱 신경써야하고 중요한 부분이다.
따라서, package.tar.gz 이라던지, package.tar.bz 같이,
압축을 하더라도 tar로 묶은 뒤 압축을 하게 된다.
tar파일의 구조
tar파일은, 기본적으로 512바이트의 블럭들로 구성된다.
각 파일이나 디렉터리는 이 512바이트의 블럭으로 시작되며,
이 때 시작 블럭에는 메타데이터들이 포함된다.
파일 이름, 크기, 소유권, 수정시각, 체크섬 등등을 담고 있다.
이후 다음 블럭에서 해당 파일에 대한 내용 데이터가 시작된다.
만일 파일 데이터가 블럭을 다 안 채우고 끝나면,
남은 512바이트 경계까지는 NULL로 채워지게 된다.
이러한 어렵지 않은 구조 덕분에,
메타데이터를 포함하여 빠르게 아카이빙이 가능하지만,
원하는 데이터를 찾기 위해서는 첫 블럭부터 계속 탐색해나가야 한다.
zip같은 포맷은 압축된 파일들의 목록과 인덱스를 관리하는,
중앙 디렉터리 데이터가 존재한다.
이는 tar보다 빠르게 특정 데이터에 접근할 수 있게 해준다!
'공부한 이야기 > 리눅스' 카테고리의 다른 글
amazon linux? (0) | 2024.03.09 |
---|---|
리눅스 - 응용 분야 (0) | 2022.08.24 |
리눅스 - 네트워킹 (0) | 2022.08.24 |
리눅스 - X-Windows (0) | 2022.08.24 |
리눅스 - 주변기기 (0) | 2022.08.21 |