Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 tar 파일(압축 아카이브)을 만드는 방법

Python에서 tarfile 모듈로 압축 아카이브 만들기

Python에서 디렉터리 전체를 하나의 tar.gz 파일로 압축하려면 표준 라이브러리의 tarfile 모듈을 사용하면 됩니다. os.walk 함수로 디렉터리 트리를 순회하면서 하위 폴더에 있는 모든 파일을 재귀적으로 아카이브에 추가하는 방식입니다.

예제 코드

import os
import tarfile

def tardir(path, tar_name):
    with tarfile.open(tar_name, "w:gz") as tar_handle:
        for root, dirs, files in os.walk(path):
            for file in files:
                tar_handle.add(os.path.join(root, file))

tardir('./my_folder', 'sample.tar.gz')

코드 설명

tarfile.open(tar_name, "w:gz")은 gzip으로 압축된 tar 파일을 쓰기 모드로 생성합니다. with 문을 사용했기 때문에 작업이 끝나면 파일이 자동으로 닫히므로 별도의 tar.close() 호출이 필요하지 않습니다.

os.walk(path)는 지정한 경로를 최상위로 하는 디렉터리 트리를 순회하며 각 단계마다 현재 경로(root), 하위 디렉터리 목록(dirs), 파일 목록(files)을 반환합니다. 이 값을 이용해 os.path.join(root, file)로 각 파일의 전체 경로를 만든 뒤 tar_handle.add()로 아카이브에 추가합니다.

위 코드를 실행하면 my_folder 디렉터리의 내용 전체가 sample.tar.gz라는 파일로 압축되어 현재 작업 디렉터리에 저장됩니다.

참고 사항

압축 없이 tar 파일만 만들고 싶다면 모드를 "w"로, bzip2 압축을 사용하려면 "w:bz2"로 변경하면 됩니다. 또한 빈 하위 디렉터리까지 아카이브에 포함하려면 dirs 목록도 함께 처리해 주면 더 완전한 백업이 가능합니다.