리눅스에서 zip 명령어로 파일과 폴더 압축하는 방법

리눅스의 zip 명령어는 아마도 명령줄에서 ZIP 파일을 다루는 가장 간단하고 직관적인 방법일 것입니다. 그리고 그뿐만 아니라, ZIP 파일 형식은 보편적입니다 – 거의 모든 운영 체제에는 이를 다룰 수 있는 기본 프로그램이 있습니다. 다음은 리눅스 명령줄에서 이 명령어를 사용할 수 있는 모든 방법입니다.
목차
- 리눅스에서 Zip 설치하는 방법
- 리눅스의 Zip 명령어: 구문 및 옵션
- Zip 명령어를 사용하여 리눅스에서 파일 압축하는 방법
- Zip 명령어를 사용하여 리눅스에서 폴더 압축하는 방법
- 리눅스 Zip 명령어를 사용하여 파일 압축 해제하는 방법
- Zip으로 리눅스 폴더 압축 해제하는 방법
- 자주 묻는 질문들
리눅스에서 Zip 설치하는 방법
리눅스 zip 명령어의 최신 버전은 모든 주요 패키지 관리자에서 사용할 수 있어야 합니다.
Debian/Ubuntu의 경우:
sudo apt install zipArch Linux의 경우:
sudo pacman -S zipFedora의 경우:
sudo dnf install zipGentoo의 경우
sudo emerge --ask zip참고: 무엇인가를 설치하기 전에, 먼저 패키지 관리자를 업데이트하여 zip 명령어의 최신 버전을 가져오세요. 이를 수행하는 방법과 더 많은 정보를 얻으려면 우리의 리눅스 패키지 관리자 치트시트를 확인하세요.
참고: zip이 설치되면 unzip 명령어도 이제 사용할 수 있습니다.
리눅스의 Zip 명령어: 구문 및 옵션
zip 명령어에는 기본 구문이 있으며, 두 개의 매개변수만 필요합니다: 출력 ZIP 파일의 파일 이름과 입력 파일의 이름입니다.
zip [options] 
그들의 위치는 여기서 중요합니다. 반대로 입력하면 컴퓨터는 존재하지 않는 “zip-file.zip”에서 “file-to-archive.jpg”를 만들려고 하는 이유를 궁금해하고 오류를 반환합니다.
옵션을 설정하려면 플래그를 사용해야 합니다. 일반적인 사용을 위해 정기적으로 필요한 8개의 플래그가 있습니다:
-dZIP 파일에서 선택된 아카이브 항목 삭제.-q터미널에 아무것도 출력하지 않고 조용히 작업 수행.-TZIP 파일의 무결성 테스트.-e파일 암호화.-u새 파일을 아카이브에 추가하여 ZIP 파일 업데이트.-m파일을 아카이브로 이동.-r폴더 내의 파일을 재귀적으로 ZIP 파일에 추가.-x선택된 파일 이름으로 파일 제외.-i선택된 이름의 파일만 포함.
플래그는 출력 앞, 입력 뒤, 두 개의 사이 어디에든 배치할 수 있습니다 – 심지어 여러 플래그를 임의의 순서로 줄에 흩어져 사용할 수 있습니다. 단, zip을 입력한 후에 플래그를 입력해야 합니다.
예외는 -x와 -i로, 이들은 사용 후 새로운 입력이 필요합니다.
Zip 명령어를 사용하여 리눅스에서 파일 압축하는 방법
zip 명령어로 파일을 아카이브하는 가장 쉬운 방법은 zip 다음에 ZIP 파일의 파일 이름과 압축하려는 파일을 입력하는 것입니다. 플래그는 선택 사항이므로, 리눅스에서 어떤 파일이든 빠르게 압축하려면 이렇게 할 수 있습니다.
zip archive.zip text_file.txt
첫 번째 파일 뒤에 다른 파일을 추가하여 더 많은 파일을 추가할 수도 있습니다. 그리고 이러한 파일 중 어떤 것이든 이름에 공백이 있는 경우, 따옴표로 묶을 수 있습니다.
zip archive.zip "file 1.txt" "file 2.txt" "file 3.txt" "file 4.txt"
-d 플래그 사용하기
-d 플래그를 사용하면 ZIP 파일 내에서 아카이브된 파일을 삭제할 수 있습니다. 이는 파일을 추가한 것과 같은 방식으로 삭제됩니다.
zip -d archive.zip remove_me.jpg
또한 아카이브 내의 전체 폴더를 제거하는 데 사용할 수 있습니다. 그러나 이 방법은 ZIP 파일 외부의 파일에는 작동하지 않으므로 아카이브 후 파일을 삭제하는 데 사용할 수 없습니다.
-q 플래그 사용하기
-q 플래그는 zip이 작업을 수행할 때 메시지를 반환하지 않도록 합니다.
zip -q archive.zip text_file.txt
이는 스크립트와 함께 zip 명령어를 사용할 때 유용합니다. 그러나 혼자서 사용하는 경우, -q 플래그를 사용하지 않는 것이 좋습니다. 그렇지 않으면 dir 또는 ls 명령어로 확인하지 않고는 아카이브 과정이 성공했는지 알 수 없습니다.
-T 플래그 사용하기
일부 ZIP 파일은 다운로드 중에 손상될 수 있습니다 – 이는 발생합니다. -T 플래그를 사용하여 무결성을 확인하면 실제로 손상된 파일인지 아니면 잘못된 비밀번호를 입력하고 있는지 알 수 있습니다.
zip -T archive.zip
이는 OS 이미지와 같은 큰 파일을 다운로드할 때 매우 중요합니다. 이러한 파일의 경우, 이를 라이브 USB에 성공적으로 구울 수 있지만, 머신에서 이미지 파일을 실행할 때 오류가 발생할 수 있습니다. 비슷하게, 비디오와 음악도 무작위로 잘린 부분이 있을 수 있습니다.
-u 플래그 사용하기
기존 ZIP 파일에 새 파일을 추가하려면 -u 플래그를 사용할 수 있습니다.
zip -u archive.zip new_file.txt
기존 ZIP 아카이브를 만들기 위해 zip 명령어를 일반적으로 사용하는 것처럼 첫 번째 파일 뒤에 더 많은 파일을 추가할 수 있습니다.
-e 플래그 사용하기
비밀번호를 추가하려면 -e 플래그를 사용해야 합니다. 이 옵션은 ZIP 파일 내의 명령어로 추가하는 파일에만 비밀번호와 암호화를 적용하므로, 이전 파일은 -u 플래그와 함께 사용할 경우 암호화되지 않은 상태로 남아 있습니다.
zip -e archive.zip text_file.txt
ZIP 파일의 훌륭한 점은 비밀번호 생성 과정이 접근을 제공하는 것 외에도 추가적인 보호 계층을 추가한다는 것입니다. 비밀번호는 ZIP 파일에 추가된 추가 암호화 계층을 해독하는 데 사용되는 디지털 서명처럼 작용합니다.
-m 플래그 사용하기
마지막으로, -m 플래그는 ZIP 파일에 아카이브된 후 원본 파일을 삭제합니다. 이를 자동화된 추가 단계로 생각하여 직접 제거할 필요가 없습니다.
zip -m archive.zip text_file.txt
하나의 중요한 점은: -m 플래그는 파일 복구 도구를 사용하지 않고는 복구할 수 없도록 파일을 삭제합니다. 따라서 백업을 유지하거나 대신 rm 명령어를 사용하여 수동으로 제거하는 것이 좋습니다.
Zip 명령어를 사용하여 리눅스에서 폴더 압축하는 방법
zip 명령어를 원시 폴더에 사용하면 파일이 전혀 포함되지 않은 폴더가 남게 됩니다. 폴더를 압축하려면 -r 플래그를 사용해야 합니다.
-r 플래그 사용하기
-r 플래그, 즉 재귀적 플래그는 폴더와 그 하위 폴더의 각 내용을 통해 아카이브하여 ZIP 파일에 모든 것을 포함합니다. 또한 각 하위 폴더의 현재 구조를 유지합니다.
zip -r archive.zip my_folder
현재 폴더 내의 모든 것을 아카이브하려는 경우에도 작동합니다. my_folder를 ./로 바꾸면 현재 폴더 내의 모든 것으로 대상을 변경합니다.
zip -r archive.zip ./
또한, -u 플래그와 함께 사용하여 폴더와 그 내용을 기존 ZIP 파일에 포함할 수 있습니다.
zip -r -u archive.zip another_folder
-i 플래그 사용하기
-i 플래그를 사용하면 포함할 특정 파일을 선택하고 폴더 내의 모든 다른 파일을 제외할 수 있습니다.
zip -r archive.zip my_folder -i my_folder/a_subfolder/file1.txt
-i 플래그와 함께 * 와일드카드를 사용하면 비슷한 이름을 가진 파일을 선택할 수 있습니다. 예를 들어, *.txt를 입력하면 ZIP 명령어가 폴더 내의 모든 TXT 파일을 포함합니다.
zip -r archive.zip my_folder -i "*.txt"
-x 플래그 사용하기
-x 플래그를 사용하면 전체 폴더를 압축하는 동안 특정 파일만 제외할 수 있습니다.
zip -r archive.zip my_folder -x my_folder/dont_zip.jpg
또한, -x 플래그는 함께 사용할 때 -i 플래그를 무시합니다. 이렇게 하면 예를 들어, zip에게 다른 모든 파일을 포함하되 압축하지 않으려는 파일을 제외하도록 지시할 수 있습니다.
zip -r archive.zip my_folder -i "*.txt" -x my_folder/dont_zip.txt
리눅스 Zip 명령어를 사용하여 파일 압축 해제하는 방법
unzip 프로그램은 기본 zip 프로그램의 파트너 프로그램입니다. ZIP 아카이브에서 파일을 추출합니다.
이 프로그램을 사용하려면 unzip과 ZIP 아카이브의 파일 이름을 입력하면 됩니다.
unzip archive.zip
unzip 명령어를 사용하면 ZIP 파일이 어디에서 왔는지와 관계없이 현재 작업 디렉토리 내에서 ZIP 파일을 압축 해제합니다.
ZIP 파일 내에서 다른 파일은 압축 해제되지 않고 특정 리눅스 파일만 압축 해제하려면 아카이브를 입력한 후 해당 파일 이름을 추가하면 됩니다.
unzip archive.zip file.txt
Zip으로 리눅스 폴더 압축 해제하는 방법
unzip은 일반적으로 ZIP 아카이브 내에 있는 폴더를 추출하지만, 특정 폴더만 추출하도록 만드는 것은 꽤 어렵습니다. 그러나 불가능하지는 않습니다.
unzip archive.zip my_folder/a_subfolder/*
이 코드 줄은 a_subfolder 내의 모든 것을 추출합니다.
또한, 폴더를 압축 해제할 때 unzip 프로그램은 현재 작업 디렉토리 내에 새 폴더를 생성하고 그곳에 폴더를 풀어냅니다. 동일한 이름의 폴더가 존재하는 경우(또는 이전 버전의 폴더가 존재하는 경우), 현재 폴더에 있는 파일을 교체해도 괜찮은지 묻습니다.
자주 묻는 질문들
리눅스에서 gzip 명령어는 무엇을 하나요?
리눅스 gzip 명령어는 파일을 GZ 파일로 저장하고 압축하는 데 사용할 수 있는 도구입니다.
ZIP이 TAR보다 나은가요?
어떤 면에서 ZIP은 TAR보다 낫습니다. ZIP 파일은 내용을 압축, 암호화 및 보호할 수 있습니다. 그러나 TAR 파일은 더 빠른 파일 전송을 위해 파일을 하나의 파일로 결합하는 데 사용됩니다. ZIP 파일은(같은 목적을 위해 사용되지만) 이러한 추가 기능을 염두에 두고 있습니다.
TAR이 ZIP보다 빠른가요?
TAR 파일은 내용을 압축하거나 암호화하지 않습니다. 따라서 많은 파일을 하나의 쉽게 전송할 수 있는 아카이브로 결합하는 더 빠른 방법을 찾고 있다면, TAR이 ZIP보다 더 나은 성능을 보일 것입니다. 그러나 ZIP 파일이 TAR 파일보다 훨씬 작기 때문에 ZIP 파일을 전송하는 것이 더 쉬울 수 있습니다.
이미지 출처: Unsplash, Terenz Jomar Dela Cruz의 스크린샷