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:티스토리]
반응형