관리 메뉴

피터의 개발이야기

[shell] 파일 폴더 압축 tar shell 본문

Linux/Shell Script

[shell] 파일 폴더 압축 tar shell

기록하는 백앤드개발자 2024. 8. 7. 10:10
반응형

파일 폴더를 압축하고 에러 처리가 가능한 shell(tar 버젼)

#!/bin/bash

# 압축할 폴더와 결과 파일 이름을 인자로 받음
SOURCE_DIR="$1"
OUTPUT_FILE="$2"

# 함수: 에러 메시지 출력 및 종료
error_exit() {
    echo "에러: $1" >&2
    exit 1
}

# 인자 개수 확인
if [ $# -ne 2 ]; then
    error_exit "사용법: $0 <압축할_폴더> <결과_파일.tar.gz>"
fi

# 소스 디렉토리 존재 확인
if [ ! -d "$SOURCE_DIR" ]; then
    error_exit "지정한 폴더가 존재하지 않습니다: $SOURCE_DIR"
fi

# 출력 파일 이름이 .tar.gz로 끝나는지 확인
if [[ "$OUTPUT_FILE" != *.tar.gz ]]; then
    OUTPUT_FILE="${OUTPUT_FILE}.tar.gz"
    echo "출력 파일 이름을 $OUTPUT_FILE로 변경했습니다."
fi

# 압축 진행: -C 
echo "압축 시작: $SOURCE_DIR -> $OUTPUT_FILE"
if tar -czf "$OUTPUT_FILE" -C "$(dirname "$SOURCE_DIR")" "$(basename "$SOURCE_DIR")" 2>/dev/null; then
    echo "압축 완료: $OUTPUT_FILE"
else
    error_exit "압축 과정에서 오류가 발생했습니다."
fi

# 압축 파일 크기 확인
FILE_SIZE=$(du -h "$OUTPUT_FILE" | cut -f1)
echo "압축 파일 크기: $FILE_SIZE"

# 압축 파일 존재 확인
if [ -f "$OUTPUT_FILE" ]; then
    echo "압축 파일이 성공적으로 생성되었습니다: $OUTPUT_FILE"
else
    error_exit "압축 파일 생성에 실패했습니다."
fi

 

 옵션  설명
 -c  파일을 tar로 묶음
 -p  파일 권한을 저장
 -v  묶거나 파일을 풀 때 과정을 화면으로 출력
 -f  파일 이름을 지정
 -C  경로를 지정
 -x  tar 압축을 풂
 -z  gzip으로 압축하거나 해제함

출처: https://nota.tistory.com/53 [nota's story:티스토리]

반응형
Comments