파일 용량을 줄이거나 여러 파일을 하나로 묶어 전송해야 할 때 활용할 수 있는 도구와 방법은 다양합니다. 그중에서도 7-Zip은 뛰어난 성능과 높은 압축률을 무료로 제공하는 독보적인 강점 덕분에 많은 사용자에게 가장 사랑받는 압축 프로그램으로 자리 잡았습니다.
다만 이 형식의 압축 과정은 생각보다 복잡하게 느껴질 수 있습니다. 특히 폴더와 하위 폴더의 모든 내용을 하나의 압축 "번들"로 묶는 것이 목적인 일반 사용자라면 더욱 그렇습니다.
그래서 이번 글에서는 Bash의 별칭(alias) 기능과 7z 명령줄 버전을 결합해, 단 한 줄의 간단한 명령어로 파일을 압축하는 방법을 소개합니다.
p7zip 설치하기
7-Zip은 가장 인기 있는 압축 도구이기 때문에 대부분의 리눅스 배포판에 이미 설치되어 있을 가능성이 높습니다. 터미널에서 "7z" 명령어를 입력해 확인해 보세요. 만약 설치되어 있지 않다면 Ubuntu/Debian 계열 배포판에서 아래 명령어로 설치할 수 있습니다.
sudo apt-get install p7zip-full
Bash 별칭 파일 준비하기
Bash의 별칭(alias) 기능은 명령어 한 개 또는 여러 명령어의 연속을 하나의 단어로 매핑할 수 있게 해줍니다. 별칭을 추가하는 가장 쉬운 방법은 "~/.bashrc" 파일 끝에 직접 입력하는 것이지만, 편의성과 체계적인 관리를 위해서는 별도의 파일에 보관하는 것이 좋습니다.
이 별도 파일(~/.bash_aliases)은 이미 존재하고 있고 Bash 설정에서 참조하고 있을 가능성이 높습니다. 자주 사용하는 에디터로 "~/.bashrc" 파일을 열어 아래 내용이 있는지 확인해 보세요.
if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi
만약 없다면 파일 맨 마지막에 위 코드를 추가하면 됩니다.
7-Zip 정보 미리 살펴두기
터미널에서 7-Zip을 실행하면 명령줄 옵션 요약을 확인할 수 있습니다. 더 자세한 정보가 필요하다면 공식 사용자 가이드를 참고하거나 아래 명령어로 man 페이지를 열어보세요.
man 7z
이 정보들은 자신만의 압축 명령어를 구성하는 데 큰 도움이 됩니다. 물론 이 글에서 소개하는 명령어만으로도 대부분의 필요를 충족할 수 있으니, 그대로 복사해 .bash_aliases 파일에 붙여 넣으셔도 좋습니다.
최고 압축률 별칭 만들기
자주 사용하는 에디터(여기서는 nano 사용)로 "~/.bash_aliases" 파일을 열고 아래 내용을 입력합니다.
alias 75='7z a -r -t7z -m0=lzma2 -mx=9 -myx=9 -mqs=on -ms=on'
alias 75는 앞으로 디렉터리 내 모든 파일과 폴더를 7-Zip 번들 하나로 묶을 때 사용할 "75"라는 명령어를 생성한다는 의미입니다. 이 독특한 이름을 붙인 이유는 "7zip 압축 레벨 5"의 짧은 버전으로 기억하기 쉽기 때문입니다.
7z는 압축 명령어 자체이며, 바로 뒤의 a는 "새 압축 패키지에 파일을 추가하겠다"는 옵션입니다. -r은 p7zip이 실행된 폴더에만 머물지 않고 모든 하위 폴더와 그 안의 내용까지 최종 압축 패키지에 포함시키도록 지시합니다.
-t7z -m0=lzma2는 주로 LZMA2 알고리즘을 사용해 7z 패키지를 생성하겠다는 설정입니다. 이 알고리즘은 대부분의 파일 유형에서 가장 우수한 압축률을 보여줍니다.
-mx=9 -myx=9는 압축 수준과, 7-Zip이 압축 대상 파일의 내용을 분석해 최적의 압축 전략을 찾기 위해 들일 "노력의 양"을 결정합니다. 값이 높을수록 압축률이 올라가고 결과물의 용량은 작아집니다.
마지막으로 -mqs=on -ms=on은 "솔리드(solid)" 압축을 사용하겠다는 의미입니다. 솔리드 압축은 비슷한 파일들을 하나의 데이터 덩어리로 취급해 압축함으로써 더욱 뛰어난 결과를 얻는 방식입니다. 이 옵션이 선택 사항으로 제공되는 이유는 장점만 있는 것이 아니기 때문입니다. 압축 시간이 길어지고, 완성된 번들에서 개별 파일만 따로 압축 해제할 수 없게 됩니다. 즉, 솔리드 압축 상태에서는 zip에서 "파일 하나만 추출하는" 작업이 불가능하며, 내용에 접근하려면 번들 전체를 압축 해제해야 합니다.
별칭 복제 후 단계별로 단순화하기
우리는 가능한 최대 압축률을 구현하는 명령어부터 시작했습니다. 이렇게 하면 나중에 요소를 더 추가할 필요 없이, 파라미터를 제거하고 설정값을 낮추는 방식으로 거꾸로 내려가며 여러 단계의 별칭을 만들 수 있습니다.
먼저 기존 명령어를 다섯 번 더 복사해 각각 별도의 줄에 배치합니다. 첫 번째 줄은 이미 최고 압축률을 달성하므로 그대로 두고, 나머지는 아래 예시처럼 불필요한 옵션을 제거하고 압축 수준을 낮추며 순서대로 수정합니다. 이때 별칭 이름도 낮아진 압축 수준에 맞게 변경하는 것을 잊지 마세요.
다음 코드를 통째로 복사해 ~/.bash_aliases 파일에 붙여 넣어도 됩니다.
alias 75='7z a -r -t7z -m0=lzma2 -mx=9 -myx=9 -mqs=on -ms=on' alias 74='7z a -r -t7z -m0=lzma2 -mx=9' alias 73='7z a -r -t7z -m0=lzma2 -mx=7' alias 72='7z a -r -t7z -m0=lzma2 -mx=5' alias 71='7z a -r -t7z -m0=lzma2 -mx=3' alias 70='7z a -r -t7z -m0=lzma2 -mx=1'
별칭 활성화하기
변경 사항을 저장한 뒤 터미널로 돌아옵니다. 새로 만든 별칭을 로드하고 활성화하려면 아래 명령어를 사용하세요.
source ~/.bashrc
이제 새로운 압축 명령어가 활성화되었습니다. p7zip은 "무엇을 압축할지"를 파라미터로 지정하지 않으면 실행된 디렉터리의 모든 파일을 대상으로 동작합니다. 따라서 앞으로 폴더의 내용을 7z 패키지로 압축하고 싶을 때는 아래 명령어만 입력하면 됩니다.
75 archive_name
여기서 "75"는 앞서 만든 최고 압축률 별칭이고, "archive_name"은 생성될 압축 파일의 이름입니다. "75" 대신 다른 별칭(75부터 70까지)을 사용하면 압축률은 조금씩 낮아지지만 압축 속도는 빨라지며, 최종 파일명은 원하는 대로 자유롭게 정할 수 있습니다.
궁금한 점이 있다면 아래 댓글로 알려주세요.