tar와 gzip
100%

패키지 · 레슨 3

tar와 gzip

`tar`로 파일을 아카이브하고, `gzip`으로 스트림을 압축하며, 안전하게 풀기 전에 아카이브를 검사하는 방법을 알아봅니다.

아카이브와 압축은 서로 다른 문제를 해결합니다. 아카이브는 디렉터리 트리와 그 메타데이터를 하나의 스트림으로 결합합니다. 압축은 스트림의 크기를 줄이도록 인코딩합니다. .tar.gz 파일은 관례상 gzip으로 스트림을 압축한 tar 아카이브입니다.

`gzip`으로 단일 스트림 압축하기

기본적으로 gzip은 파일을 압축하고 원래 이름을 .gz 파일로 바꿉니다.

$ gzip report.txt

일반적으로 report.txt.gz를 성공적으로 만든 뒤 report.txt를 제거합니다. 다음 명령으로 압축을 풉니다.

$ gunzip report.txt.gz

지원되는 환경에서 입력 파일을 유지하려면 gzip -k report.txt를 사용하고, 명시적으로 제어해야 한다면 표준 스트림을 사용하십시오. 파일 이름 확장자는 관례일 뿐 실제 형식의 증거는 아닙니다. file 같은 도구로 내용을 검사할 수 있습니다.

이 수업에서 gzip의 주된 역할은 무엇입니까?

Tar 아카이브 만들기

다음 명령으로 압축하지 않은 아카이브를 만듭니다.

$ tar -cvf project.tar file1 file2 directory1
  • -c는 새 아카이브를 만듭니다.
  • -v는 처리 중인 멤버를 나열하며 선택 사항입니다.
  • -f project.tar는 아카이브 파일 이름을 지정합니다. -f는 인수를 하나 소비하므로 파일 이름을 바로 옆에 두십시오.

경로는 아카이브 멤버 이름으로 저장됩니다. 의도한 작업 디렉터리에서 아카이브를 만들고 비밀 정보, 캐시, 소켓 또는 광범위한 절대 경로가 뜻하지 않게 포함되지 않도록 주의하십시오.

새 아카이브를 만드는 tar 옵션은 무엇입니까?

Gzip으로 압축된 Tar 아카이브 만들기

GNU tar를 비롯한 여러 구현은 -z 옵션으로 gzip을 호출할 수 있습니다.

$ tar -czvf project.tar.gz file1 file2 directory1

결과는 gzip으로 압축된 하나의 tar 스트림입니다. 압축은 아카이브를 암호화하지 않으며, 파일을 읽고 압축을 풀 수 있는 사람에게 내용을 숨기지도 않습니다. 기밀성이 필요하다면 적절한 인증 암호화 작업 흐름을 사용하고 키를 별도로 관리하십시오.

tar 명령에서 -z는 무엇을 요청합니까?

추출하기 전에 목록 확인하기

다른 사람이 제공한 아카이브는 신뢰할 수 없는 입력으로 취급하십시오. 먼저 멤버 이름을 나열합니다.

$ tar -tzf download.tar.gz

예상하지 못한 절대 경로, .. 경로 순회 구성 요소, 의심스러운 심볼릭 링크나 하드 링크, 장치 파일 및 중요 파일을 덮어쓸 이름이 있는지 확인하십시오. 최신 tar 구현에는 보호 기능이 있지만 동작과 옵션은 구현마다 다르며, 추출하면 여전히 공격자가 정한 이름과 내용이 생성됩니다.

새로 만든 비특권 스테이징 디렉터리에 추출합니다.

$ mkdir extraction-stage
$ tar -xzf download.tar.gz -C extraction-stage

검토하지 않은 아카이브를 root로 추출하지 마십시오. 생성된 내용을 확인한 다음 선택한 파일만 최종 위치로 옮기십시오.

아카이브 멤버를 추출하지 않고 나열하는 작업은 무엇입니까?

기타 압축 형식

tar 구현은 bzip2 및 xz 같은 압축 도구와 함께 작동할 수 있으며, GNU tar에서는 일반적으로 각각 -j-J로 선택합니다. 형식 지원 및 자동 감지 방식은 서로 다르므로 tar --help 또는 로컬 설명서를 확인하십시오. ZIP은 별도의 아카이브 형식이며 zipunzip 같은 도구로 다룹니다.

gzip 압축을 적용하면 tar 아카이브의 기밀성이 보장됩니까?

레슨 완료

tar와 gzip 완료

이제 tar 아카이브와 gzip 압축을 안전하게 결합할 수 있습니다.

  • tar 아카이브와 gzip 압축을 구분합니다.

  • -c로 아카이브를 만들고 -z로 gzip 스트림을 처리합니다.

  • -x로 추출하기 전에 -t로 멤버를 나열합니다.

  • 신뢰할 수 없는 콘텐츠는 비특권 스테이징 디렉터리에 추출합니다.

  • 압축과 암호화는 서로 다른 기능으로 취급합니다.

학습 진행 상황 저장

무료 계정을 만들어 이 레슨을 저장하고 어떤 기기에서든 계속 학습하세요.

무료 계정 만들기
다음 수업
패키지(으)로 돌아가기